【问题标题】:Image and buttons in ListView in androidandroid中ListView中的图像和按钮
【发布时间】:2014-07-31 18:49:51
【问题描述】:

我有一个可以使用 AsyncTask 从 MySql 获取数据的 listView,但我的问题是当我在 ListView 中添加一些按钮和图像时。我添加了一些按钮,但我可以使用它并且图像不会显示。

这是我的代码...

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    studentList = new ArrayList<HashMap<String, String>>();

    new Loadstudent().execute();

    ListView lv = getListView();



    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            Intent i = new Intent(getApplicationContext(), Maindetail.class);
            String sidlist = ((TextView) view.findViewById(R.id.tid)).getText().toString();
            String namelist = ((TextView) view.findViewById(R.id.sname)).getText().toString();
            i.putExtra(TAG_ID, sidlist);
            i.putExtra(TAG_NAME, namelist);
            startActivity(i);
        }
    });

}

class Loadstudent extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Loading students. Please wait...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    protected String doInBackground(String... args) {

        List<NameValuePair> params = new ArrayList<NameValuePair>();
        JSONObject json = jParser.makeHttpRequest(url_student, "GET", params);

        Log.d("ALL student: ", json.toString());

        try {

            int success = json.getInt(TAG_SUCCESS);

            if(success == 1) {
                student = json.getJSONArray(TAG_STUDENT);

                for (int i=0; i<student.length(); i++) {
                    JSONObject c = student.getJSONObject(i);

                    sid = c.getString(TAG_ID);
                    name = c.getString(TAG_NAME);
                    photo = c.getString(TAG_PHOTO);

                    HashMap<String, String> map = new HashMap<String, String>();

                    map.put(TAG_ID, sid);
                    map.put(TAG_NAME, name);
                    map.put(TAG_PHOTO, photo);

                    studentList.add(map);
                }
            }else {

            }

        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

    protected void onPostExecute(String file_url) {
        pDialog.dismiss();

        runOnUiThread(new  Runnable() {
            public void run() {
                ListAdapter adapter = new SimpleAdapter(
                        MainActivity.this, studentList,
                        R.layout.list_main, new String[] {
                                TAG_PHOTO,TAG_ID, TAG_NAME},
                        new int [] { R.id.imageviewlist, R.id.tid, R.id.sname });
                setListAdapter(adapter);

            }
        });
    }

}

我从网上学习了lazyadapter,但是将它与代码结合时遇到了问题。 有任何可以解决我的问题的教程或链接都会有很大的帮助。提前致谢。

【问题讨论】:

  • 您想在列表视图的每一行中添加按钮和图像吗?
  • @Jaume 是的,我添加了按钮和图像,但按钮在 setOnClick 上不起作用......而且图像我不知道如何显示它,任何帮助都会很棒。感谢您的评论
  • 图片是从本地还是url显示的?
  • 是的,网址是正确的,因为当我检查它时,它会显示在我的浏览器中。

标签: android mysql listview


【解决方案1】:

嘿试试下面的方法-

       lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            Intent i = new Intent(getApplicationContext(), Maindetail.class);
            HashMap<String, String> data = studentList.get(position);
            String sidlist = data.get(TAG_ID);
            String namelist = data.get(TAG_NAME);
            i.putExtra(TAG_ID, sidlist);
            i.putExtra(TAG_NAME, namelist);
            startActivity(i);
        }
    });

【讨论】:

    【解决方案2】:

    如果你想在每行布局中添加额外的组件,你必须为列表视图创建自己的适配器。

    不容易啊,都是我前段时间写的-->ListView Custom Adapter getView

    希望对你有帮助!

    【讨论】:

    • 是的,这并不容易,但是谢谢,我认为这是您的帖子。你在那个 android 项目中还有其他类文件吗?
    • @hPys 不客气!如果您认为这是一个可能的解决方案,请打勾:P
    • 你的listview中的数据是否来自数据库?
    • 你对你的 main.java 使用了 asynctask 吗?用于获取数据库中的数据到列表视图
    • @hPys 是的,数据来自我的外部数据库。是的,我使用了一个异步任务来使用 Httppost 接收数据。
    猜你喜欢
    • 2014-08-10
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多