2012-06-08 1 views
0

많은 어려움을 겪고 있습니다. 아무도 나를 도울 수 없습니까? 나는listfragments에 기본 어댑터를 사용하여 사용자 지정 목록보기를 표시하는 방법

i try this code 
    public class MyListFragment1 extends ListFragment { 

ImageView back; 
String url = Main.url; 
String Qrimage; 
Bitmap bmp; 
ListView list; 

AppetiserFragment adapter; 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View tmp_view = inflater.inflate(R.layout.applistviewfragment, container, false); 
    ListView list = (ListView) tmp_view.findViewById(R.id.list); 
    InputStream is = null; 
    String result = ""; 
    JSONObject jArray = null; 
    try { 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url + "test.php3"); 
     HttpResponse response = httpClient.execute(httpPost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
    } catch (Exception e) { 
     // TODO: handle exception 
     Log.e("Log", "Error in Connection" + e.toString()); 

     // Intent intent = new Intent(ViewQRCode.this, PimCarder.class); 

     // startActivity(intent); 

    } 
    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       is, "iso-8859-1"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
     is.close(); 
     result = sb.toString(); 
     jArray = new JSONObject(result); 
     JSONArray json = jArray.getJSONArray("appetiser"); 

     adapter = new AppetiserFragment(getActivity(), json); 
     list.setAdapter(adapter); 


    } catch (Exception e) { 
     // TODO: handle exception 
     Log.e("log", "Error in Passing data" + e.toString()); 
    } 
    return tmp_view; 

} 


    } 

AppetiserFragment.java이

   public class AppetiserFragment extends BaseAdapter { 
public static ArrayList<String> arr = new ArrayList<String>(); 
public static ArrayList<String> itemprice = new ArrayList<String>(); 
public static ArrayList<Bitmap> image = new ArrayList<Bitmap>(); 
String url = Main.url; 
public Context Context; 
String qrimage; 
Bitmap bmp, resizedbitmap; 
Bitmap[] bmps; 
Activity activity = null; 
private LayoutInflater inflater; 

private ImageView[] mImages; 
String[] itemimage; 
TextView[] tv; 
String itemname, price, desc, itemno; 
String[] itemnames, checkeditems, itemnos; 
String[] prices; 
String[] descs; 
HashMap<String, String> map = new HashMap<String, String>(); 

public AppetiserFragment(Context context, JSONArray imageArrayJson) { 
    Context = context; 
    // inflater = 

    System.out.println(imageArrayJson); 
    // (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    // imageLoader=new ImageLoader(activity); 
    inflater = LayoutInflater.from(context); 
    this.mImages = new ImageView[imageArrayJson.length()]; 
    this.bmps = new Bitmap[imageArrayJson.length()]; 
    this.itemnames = new String[imageArrayJson.length()]; 
    this.prices = new String[imageArrayJson.length()]; 
    this.descs = new String[imageArrayJson.length()]; 
    this.itemnos = new String[imageArrayJson.length()]; 
    try { 

     for (int i = 0; i < imageArrayJson.length(); i++) { 
      JSONObject image = imageArrayJson.getJSONObject(i); 

      qrimage = image.getString("itemimage"); 
      itemname = image.getString("itemname"); 
      itemno = new Integer(i + 1).toString(); 
      price = image.getString("price"); 
      desc = image.getString("itemdesc"); 
      **System.out.println(price);** 
      itemnames[i] = itemname; 
      prices[i] = price; 
      descs[i] = desc; 
      itemnos[i] = itemno; 

      byte[] qrimageBytes = Base64.decode(qrimage.getBytes()); 

      bmp = BitmapFactory.decodeByteArray(qrimageBytes, 0, 
        qrimageBytes.length); 
      int width = 100; 
      int height = 100; 
      resizedbitmap = Bitmap.createScaledBitmap(bmp, width, height, 
        true); 
      bmps[i] = bmp; 

      mImages[i] = new ImageView(context); 
      mImages[i].setImageBitmap(resizedbitmap); 

      mImages[i].setScaleType(ImageView.ScaleType.FIT_START); 

      // tv[i].setText(itemname); 
     } 
     System.out.println(map); 

    } catch (Exception e) { 
     // TODO: handle exception 
    } 
} 

public AppetiserFragment() { 
    // TODO Auto-generated constructor stub 
} 

public int getCount() { 
    return mImages.length; 
} 

public Object getItem(int position) { 
    return position; 
} 

public long getItemId(int position) { 
    return position; 
} 

public View getView(final int position, View convertView, ViewGroup parent) { 

    View view = convertView; 
    final ViewHolder viewHolder; 
    if (view == null) { 
     view = inflater.inflate(R.layout.appetiserlistview, null); 

     viewHolder = new ViewHolder(); 
     viewHolder.image = (ImageView) view 
       .findViewById(R.id.appetiserimage); 
     viewHolder.text = (TextView) view.findViewById(R.id.appetisertext); 
     viewHolder.desc = (TextView) view.findViewById(R.id.appetiserdesc); 
     viewHolder.price = (TextView) view 
       .findViewById(R.id.appetiserprice); 
     viewHolder.appitemnum = (TextView) view 
       .findViewById(R.id.appitemno); 

     view.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) view.getTag(); 
    } 
    viewHolder.image.setImageBitmap(bmps[position]); 
    viewHolder.appitemnum.setText(itemnos[position]); 
    viewHolder.price.setText(prices[position]); 
    viewHolder.desc.setText(descs[position]); 
    ViewHolder holder = (ViewHolder) view.getTag(); 
    holder.text.setText(itemnames[position]); 

    return view; 
} 

static class ViewHolder { 

    protected TextView text, price, desc, appitemnum; 
    protected ImageView image; 
    public static CheckBox checkbox = null; 
} 

} 

내가 수 가격 값을 인쇄 할 수 있습니다 listfragment에 기본 어댑터를 사용하여 사용자 정의 목록보기를 수행합니다. 만약 내가 별도로 사용자 정의 listview 할 수있는 이미지, 텍스트, desc, 가격. 하지만 MyFragmentlist1에서 listfragment로 확장하면 사용자 정의 listview에서 볼 수 없다는 것을 의미합니다. 나는이 클래스의 MyListFragment1에만 문제가 있다고 생각했다. 도와주세요. 아주 긴급

답변

0

에 한번 이런 식으로

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
       ListView list = getListView(); 
       list.setAdapter(adapter); 
       adapter.notifyDataSetChanged(); 
     } 
+0

나중에 정말 감사드립니다 .... – naveen

1

먼저 별도의 레이아웃 layout_txtview 만들기에서 onActivityCreated 콜백에 setAdapter 이동. 텍스트 뷰를 사용하고 있습니다. 한 행에 표시 할 항목에 따라 레이아웃을 만들 수 있습니다.

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/textView1" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:padding="10dp" 
android:textColor="#000000" 
android:textAppearance="?android:attr/textAppearanceSmall" /> 

사용자 정의 어댑터의 getView() 메소드를 확장하려면이 레이아웃을 사용하십시오. 지금 MyListFragment1 클래스에서 onCreate() 메서드는 사용자 정의 어댑터

setAdapter(new MyListFragment1 (<apss your constructor argument>)); 

및 완료에 어댑터를 설정합니다.