1

我发现这个关于使用 ListView 项目图标的优秀教程。 http://www.debugrelease.com/2013/06/24/android-listview-tutorial-with-images-and-text/

我完全按照它,我的 ListView 布局看起来很棒!但是...我无法让 onclick 侦听器为 ListView 工作。我只是停留在 ListView 屏幕上。这是我放置监听器的 Main.java 代码。我正在使用 Deepak(来自上面的链接)的 Item 和 ItemAdapter 类,没有任何变化。我只更改了他的模型类以放入我自己的图标文件名。我错过了什么?

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.ListView;

public class Main extends Activity {

ListView listView;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Model.LoadModel();
    listView = (ListView) findViewById(R.id.listView);
    String[] ids = new String[Model.Items.size()];
    for (int i= 0; i < ids.length; i++){

        ids[i] = Integer.toString(i+1);
    }

    ItemAdapter adapter = new ItemAdapter(this,R.layout.row, ids);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new OnItemClickListener(){

        @Override
        public void onListItemClick(ListView l, View v, int position, long id){

            Intent i;
            switch (position) {
            case 0:
                i = new Intent(this, AnglesConvert.class);
                startActivity(i);
                break; 
            case 1:
                i = new Intent(this, AreaConvert.class);
                startActivity(i);
                break;
        }
    });    

}

谢谢 Ankur,我修改了上面的 Main.java 文件。现在我在Everything下得到了红色的波浪线。不知道我做错了什么。

4

3 回答 3

2

使用没有附加监听器,使用这个

listview.setOnItemClickListener(new onItemClickListener(){

@Override
protected void onListItemClick(){

//Do stuff
}
});    
于 2013-10-09T19:42:27.873 回答
2

你需要打电话

listview.setOnClickListener(onListItemClick()) ;

listview.setAdapter(adapter) ;
于 2013-10-09T19:35:57.680 回答
1

为了onListItemClick工作。扩展你的课程ListActivity

public class Main extends ListActivity {

参考标准示例

http://developer.android.com/guide/topics/ui/layout/listview.html

于 2013-10-09T19:36:32.193 回答