【问题标题】:How to create listview onItemclicklistener如何在Itemclicklistener上创建listview
【发布时间】:2012-04-24 09:31:25
【问题描述】:

我想创建列表视图。我从 JSON 中得到了值。在这里,我将 json 中的值放入 listview,但我无法获得 onItemclickListener 方法。为什么会发生这种情况我不知道,请帮助我编写代码,如下所示。

Logcat 不显示任何内容。

谢谢。

<ListView
    android:id="@+id/contests_listView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:layout_below="@+id/header"
    android:focusable="true">
</ListView>

Activity.java

public class Activites_Activity extends CheerfoolznativeActivity {

private ListView contests_listView;
private ProgressBar pgb;
ActivitiesBean bean;
ArrayList<Object> listActivities;
ListAdapter adapter;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_listview);
    setHeader("Activites");


    contests_listView = (ListView) findViewById(R.id.contests_listView);
    pgb = (ProgressBar) findViewById(R.id.contests_progressBar);
    listActivities = new ArrayList<Object>();

    new FetchActivitesTask().execute();

}

public class FetchActivitesTask extends AsyncTask<Void, Void, Void> {

    int i =0;
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
         pgb.setVisibility(View.VISIBLE);
    }

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub

        String url = "my json URL";
        String strResponse = util.makeWebCall(url);

        try {

            //my json logic here        
        }
        catch (JSONException e) {

            e.printStackTrace();

        }

        return null;
    }

    @Override
    public void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        pgb.setVisibility(View.GONE);
        displayAdapter();
    }
}

public void displayAdapter()
{
    adapter = new ListAdapter(this, listActivities);
    contests_listView.setAdapter(adapter);
    contests_listView.setOnItemClickListener(new OnItemClickListener() {

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

            // Toast.makeText(getApplicationContext(),"Title => "+items.get(position), Toast.LENGTH_SHORT).show();

            System.out.println("=========== Click");
            bean = (ActivitiesBean) adapter.getItem(position);

            Intent in1 = new Intent(Activites_Activity.this, Activity_display.class);
            in1.putExtra("ActivityObject", bean);
            startActivity(in1);
        }
    });


}
}

我也用这个

contests_listView.setItemsCanFocus(true);

【问题讨论】:

  • 它是否在 ListView 中显示项目?当你点击一个项目时,它会在日志中打印=========== Click吗?
  • 你试过 setOnItemSelectedListener 吗?我认为它可能会默认调用该侦听器?
  • @Waqas ,是的,我在列表视图中得到了值,但在日志中没有显示点击,也没有显示 toast。
  • @MikeIsrael,谢谢。是的,我试过了,但是当我关注列表视图而不是单击列表视图时会显示吐司。
  • 我说的是System.out.println,不是吐司

标签: android listview onitemclicklistener


【解决方案1】:

试试这个:

contests_listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
        String item = (String) contests_listView.getItemAtPosition(position);
        Toast.makeText(this,"You selected : " + item,Toast.LENGTH_SHORT).show();                
    }
});

【讨论】:

  • 谢谢,但它不起作用,请告诉我是否有其他解决方案。
  • 但是你得到了什么错误?如果 logcat 没有给出任何输出,请尝试通过 DDMS 重置 ADB。
  • 我得到contests_listView 必须被声明为final?
【解决方案2】:

试试这个代码:

protected void onListItemClick(ListView l, View v, int position, long id) {

super.onListItemClick(l, v, position, id);

Toast.makeText(this, "message", Toast.LENGTH_LONG).show();
}

【讨论】:

  • 终于我得到了解决方案,我错误地将 ScrollView 放入了我的列表项,删除它后工作。
【解决方案3】:

使用这个:

 contests_listView.setOnItemClickListener(new AdapaterView.OnItemClickListener() {

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

            Intent in1 = new Intent(Activites_Activity.this, Activity_display.class);

            startActivity(in1);
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多