listview的监听器问题

时间:2011-06-07 12:08:45

标签: android listview

我在android中有一个应用程序我正在设置一个列表视图...现在当我按下其中一个项目时尝试显示一条消息......但是它不起作用......我我确定这很简单,但我只能弄清楚它是什么......我的听众不会工作!

public class Server3 extends ListActivity {

    static final String[] items=new String[] {"Car1",  "Car2", "Car3","Car4", "Car5"};




    public class MyCustomAdapter extends ArrayAdapter<String>{

        public MyCustomAdapter(Context context, int textViewResourceId, String[] objects) {
                 super(context, textViewResourceId, objects);
                 // TODO Auto-generated constructor stub
                }

                @Override
                public View getView (int position, View convertView, ViewGroup parent) {
                 // TODO Auto-generated method stub
                 LayoutInflater inflater=getLayoutInflater();
                 View row=inflater.inflate(R.layout.row, parent, false);
                 TextView label=(TextView)row.findViewById(R.id.item);
                 label.setText(items[position]);
                 ImageView icon=(ImageView)row.findViewById(R.id.icon);

                 if (items[position]=="Car1"){
                  icon.setImageResource(R.drawable.car1);
                 }
                 if (items[position]=="Car2"){
                      icon.setImageResource(R.drawable.car2);
                     }
                 if (items[position]=="Car3"){
                     icon.setImageResource(R.drawable.car3);             
                 }
                 if (items[position]=="Car4"){
                     icon.setImageResource(R.drawable.car4);             
                 }
                 if (items[position]=="Car5"){
                     icon.setImageResource(R.drawable.car5);             
                 }

                 return row;
                }
                }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.server3);

         setListAdapter(new MyCustomAdapter(Server3.this, R.layout.row, items));

        final ListView listView = getListView();


        listView.setItemsCanFocus(false);
        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 





    }

     @Override 
    /* public void onCreateContextMenu(ContextMenu menu, View v,  ContextMenuInfo menuInfo) {  

             menu.setHeaderTitle("Choose");  
             menu.add(0, MENU_track, 0, "Track");  
             menu.add(0, MENU_delete, 0,  "Delete");

     } 
    @Override
    public boolean onContextItemSelected(MenuItem item) {  

        switch (item.getItemId()) {  
            case MENU_track:  
                  Intent j1 = new Intent(Server3.this, Server4.class);
                   startActivity(j1);
                return true;  

            case MENU_delete:    
                  return true;  

            default:    
                return super.onContextItemSelected(item);  
        }
    }*/


    public void onListItemClick(ListView listView,View v,int position,long id)
    {

        if(items[position]=="car1")
        {
            Toast.makeText(this, "am apasat", 0).show();
        }
        if(items[position]=="car2")
        {
            System.out.println("am selectat masina 2");
        }

    }









}

如果有人可以告诉我为什么当我点击它时没有信息显示我会感激不尽。

5 个答案:

答案 0 :(得分:1)

在onListItemClick中你写了`if(items [position] ==“car1”)

`

这是Car1。你的car2中的System.out(错误,它是Car2)将无效。

答案 1 :(得分:0)

看起来Toast未正确形成

Toast.makeText(getApplicationContext(), "am apasat", Toast.LENGTH_SHORT);

制作Toast

的正确方法

答案 2 :(得分:0)

覆盖onListItemClickListener或您可以实施onClickListenergetView() MyCustomAdapter内。 就像是: ...

View row=inflater.inflate(R.layout.row, parent, false);
row.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Toast.makeText(context, "u clicked", Toast.LENGTH_LONG).show();               
            }
        });

...

答案 3 :(得分:0)

没有消息,因为您设置了Toast显示的时间0

Toast.makeText(this, "am apasat", 0).show();

使用它:

Toast.makeText(getApplicationContext(), "your message", Toast.LENGTH_SHORT);

您可以使用这些常量

Toast.LENGTH_SHORT
Toast.LENGTH_LONG

如果你想检查选择了哪个项目,你必须这样做:

if (items.get(position).equals("car1")) {
   //do some work
}

答案 4 :(得分:0)

简单

你需要在getVIew()方法中附加onCLickListener,就像这样

在getView()

中找到行View row=inflater.inflate(R.layout.row, parent, false);

并执行此操作

row.setOnClickListerer()

这将起作用