android - 如何在android中使用列表 fragment 显示自定义 ListView

标签 android android-listview baseadapter android-listfragment

我将我的 android 屏幕分成 2 个 fragment 。在第一个 fragment 中,我制作了一个从服务器数据库到 android 移动设备的 ListView 。问题是我无法在基本适配器类中调用 getview 方法。帮帮我吧

    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) {
    return inflater.inflate(R.layout.applistviewfragment, container, false);

}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    // back=(ImageView)findViewById(R.id.backfoodmenu);
    /*
     * back.setOnClickListener(new OnClickListener() {
     * 
     * public void onClick(View v) { // TODO Auto-generated method stub
     * Intent intent=new Intent(getApplicationContext(),FoodMenu.class);
     * intent.putExtra("url", url); startActivity(intent); } });
     */
    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

    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");

        Context context = null;
        context = this.getActivity().getApplicationContext();
                   //(Here i want give lisid from xml)
                     list=(Listview)findViewById(R.id.list);//i type here it shows an error
        adapter = new AppetiserFragment(context, json);

        context = getActivity().getApplicationContext();
        list.setAdapter(adapter);

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

AppetiserFragment.java

          public class AppetiserFragment extends BaseAdapter {

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);//here i can print 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);
        System.out.println("prakash");
        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);
        // viewHolder.checkbox = (CheckBox) view.findViewById(R.id.bcheck);

        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.checkbox.setTag(itemnames[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;

}

 }

我可以在 adpater 基类中打印 json 数据。现在我想将 json 数据传递给文本、图像。我以为 getview 方法没有调用。请帮助我

最佳答案

您也可以使用 ListActivity 而不是 ListFragment。 它会像正常 Activity 一样运行,您可以轻松找到所有与列表相关的方法。

像这样……

 public class MainActivity extends ListActivity {
oncreate() {
** code
ListView list = getListView();

 **code
}
}

关于android - 如何在android中使用列表 fragment 显示自定义 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10944601/

相关文章:

java - LibGDX - 应用程序在调用 TiledMapRenderer.render() 时崩溃

android - 如何从 MySQL 到 ROOM 实现 SUM()、DAY()、MONTH() 和 YEAR()

java - 从 ActionMode.Callback.onDestroyActionMode() 刷新 ListView

android - OnClick 事件重复 ListView 项目

android - 如何在 Android 的 View 中做动画?

android - 显示原生广告时出现 java.util.concurrent.RejectedExecutionException

android - Listview 自定义适配器通知父 Activity

android - 单击按钮会将列表项中按钮的可见性从不可见更改为可见

android - GridView 项目太小 - Android

java - 根据位置或项目在 ListView 中添加 View 时出错