【问题标题】:ListView onclick not functioning accrodinglyListView onclick 没有相应地运行
【发布时间】:2013-04-05 12:48:53
【问题描述】:

嗨,我在列表视图中使用列表视图,我有蔬菜和非蔬菜。所以当我点击蔬菜时,它应该移动到下一个活动并显示项目,当我点击非蔬菜时,它应该到下一个活动.我已经为两个列表项编写了 setonclickitemlistener() ,但是当我按下 veg 或 non-veg 时,它只会进入 Non-veg 活动。这是代码

public class MainActivity extends Activity {

String[] items={"veg","non-veg"};


protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

     ListView lv= (ListView)findViewById(R.id.listView1);

  ArrayAdapter<Object> adapter1 = new ArrayAdapter<Object (this,android.R.layout.simple_list_item_1,items);

  lv.setAdapter(adapter1);      

    lv.setOnItemClickListener(new OnItemClickListener() {


        public void onItemClick(AdapterView<?> arg0, View v, int arg2,
                long arg3) {

            {
            Toast.makeText(getBaseContext(),"YOU HAVE SELECTED VEG", 4000).show();
        Intent i=new Intent(MainActivity.this,veg.class);
        startActivity(i);
            }
        }
    });




  lv.setOnItemClickListener(new OnItemClickListener() {         

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {

                Toast.makeText(getBaseContext(),"YOU HAVE SELECTED NON-VEG", 4000).show();
            Intent i=new Intent(MainActivity.this,Nonveg.class);
            startActivity(i);


            }
        });

} }

请告诉我如何识别蔬菜和非蔬菜的 id 以及如何编写 setonclicklistener() 方法。

【问题讨论】:

  • 您不懂代码流...只能有 1 个 OnItemClickListener ...(String)arg0.getItemAtPosition(arg2) 将在您的onItemClick 实现中返回 veg 或 non-veg
  • 你的听众中有太多的左大括号
  • @Rawkode 大声笑...只需检查问题中的整个代码之后的内容...两个小“}}”:)
  • 只需在onItemClick()中勾选项目,然后开始相关活动...
  • 对不起,他们是结束大括号 }}

标签: android


【解决方案1】:

这段代码可以正常工作:

public class MainActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ListView lv = (ListView)findViewById(R.id.listView1);
        lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

        final String[] values = new String[] { "Veg", "Non-veg" };

                // Define a new Adapter
                // First parameter - Context
                // Second parameter - Layout for the row
                // Third parameter - ID of the TextView to which the data is written
                // Forth - the Array of data

                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1, android.R.id.text1, values);


                // Assign adapter to ListView
                lv.setAdapter(adapter); 

                lv.setOnItemClickListener(new OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> arg0, View arg1,
                            int arg2, long arg3) {
                        if (arg2 == 0) {
                        Intent intent = new Intent(MainActivity.this, veg.class);
                        startActivity(intent);
                        }
                        if (arg2 ==1) {
                            Intent intent = new Intent(MainActivity.this, Nonveg.class);
                            startActivity(intent);
                        }
                    }
                });
}

arg2 是列表中项目的位置

【讨论】:

  • 对不起,他们是结束大括号 }}
  • 谢谢你的回答,请问base adapter的用途是什么
  • 没问题,它是可以在两个ListView中使用的Adapter的通用实现的基类。在这里阅读stackoverflow.com/questions/4799380/…
  • 我又遇到了同样的问题,它对 veg 和 nonveg 的 nonveg 活动都进行了
  • 我刚刚测试过,请再次检查它是否适合我,尝试添加 Log.d("1","1");低于 arg2 == 0 和 Log.d("2","2");在 arg2 == 1 下方并检查日志,如果不同的点击显示不同,那么它就是您的清单或活动。
【解决方案2】:

你只能有一个 OnItemClickListener... 这将不得不检查视图以确定去哪里。

【讨论】:

  • 那么如果我只给一个 onitemclick 其他项目呢
  • 列表视图只能注册一个OnClickListener。每当单击任何项​​目时都会注册。您必须通过从适配器获取信息来确定您拥有什么视图,并确定如何从那里继续。
【解决方案3】:

单击列表视图项目时,获取列表视图中位置的项目。检查它是蔬菜还是非蔬菜

public class MainActivity extends Activity {
String[] items={"veg","non-veg"};
ListView lv;
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

 setContentView(R.layout.activity_main);

 lv= (ListView)findViewById(R.id.listView1);
 setContentView(lv);
 ArrayAdapter<Object> adapter1 = new ArrayAdapter<Object> (this,android.R.layout.simple_list_item_1,items);

 lv.setAdapter(adapter1);      

 lv.setOnItemClickListener(new OnItemClickListener() {


    public void onItemClick(AdapterView<?> arg0, View v, int arg2,
            long arg3) {

        {
             String itemselected =(String) (lv.getItemAtPosition(arg2));
             if(itemselected.equals("veg")){

             Toast.makeText(getBaseContext(),"YOU HAVE SELECTED VEG", 4000).show();
             Intent i=new Intent(MainActivity.this,veg.class);
             startActivity(i); 
          }
            else if(itemselected .equals("non-veg"))
            {
                Toast.makeText(getBaseContext(),"YOU HAVE SELECTED NON VEG",4000).show();
                     Intent i=new Intent(MainActivity.this,nonveg.class);
                      startActivity(i); 
            }

        }
    }


});

}
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 2021-12-19
    • 1970-01-01
    • 2012-10-20
    • 2021-08-19
    • 1970-01-01
    • 2015-06-06
    相关资源
    最近更新 更多