Android 如何使baseadapter中的自定义Listview行可单击?

Android 如何使baseadapter中的自定义Listview行可单击?,android,listview,adapter,baseadapter,Android,Listview,Adapter,Baseadapter,我用baseadapter clickable从自定义列表视图中创建行的时间很长。目前,可以单击它们,但随后出现错误,应用程序崩溃 任何帮助都将不胜感激 这里是主要活动,包括扩展baseadapter的自定义适配器 public class MainActivity extends Activity implements OnItemClickListener { ListView list; @Override protected void onCreate(Bund

我用baseadapter clickable从自定义列表视图中创建行的时间很长。目前,可以单击它们,但随后出现错误,应用程序崩溃

任何帮助都将不胜感激

这里是主要活动,包括扩展baseadapter的自定义适配器

public class MainActivity extends Activity implements OnItemClickListener {
    ListView list;

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

        list = (ListView) findViewById(R.id.listView);
        list.setAdapter(new HalsAdapter(this));
        list.setOnItemClickListener(this);
    }
    class SingleRow {
        String title;
        String description;
        int image;
        SingleRow(String title, String description, int image) {
            this.title = title;
            this.description = description;
            this.image = image;
        }
    }
    class HalsAdapter extends BaseAdapter {

        ArrayList < SingleRow > list;
        Context context;
        HalsAdapter(Context c) {

            context = c;
            list = new ArrayList < SingleRow > ();

            Resources res = c.getResources();
            String[] titles = res.getStringArray(R.array.titles);
            String[] descriptions = res.getStringArray(R.array.descriptions);
            int[] images = {
                R.drawable.placeholder1, R.drawable.placeholder2, R.drawable.placeholder3, R.drawable.placeholder4, R.drawable.placeholder5, R.drawable.placeholder6, R.drawable.placeholder7, R.drawable.placeholder8, R.drawable.placeholder9, R.drawable.placeholder10, R.drawable.placeholder11, R.drawable.placeholder12, R.drawable.placeholder13, R.drawable.placeholder14, R.drawable.placeholder15
            };
            for (int i = 0; i < 15; i++) {
                list.add(new SingleRow(titles[i], descriptions[i], images[i]));
            }
        }

        @Override
        public int getCount() {
            return list.size();
        }@Override
        public Object getItem(int i) {
            return list.get(i);
        }@Override
        public long getItemId(int i) {
            return i;
        }@Override public View getView(int i, View view, ViewGroup viewGroup) {

            LayoutInflater inflater(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View row = inflater.inflate(R.layout.single_row, viewGroup, false);

            TextView title = (TextView) row.findViewById(R.id.textView);
            TextView description = (TextView) row.findViewById(R.id.textView2);
            ImageView image = (ImageView) row.findViewById(R.id.imageView);

            SingleRow temp = list.get(i);
            title.setText(temp.title);
            description.setText(temp.description);
            image.setImageResource(temp.image);

            return row;
        }
    }@Override
    public void onItemClick(AdapterView <? > arg0, View arg1, int arg2, long arg3) {

        Intent intent = new Intent(homeScreen.this, privateSpaceList.class);
        startActivity(intent);
        break;


    }
}
public类MainActivity扩展活动实现了mclickListener{
列表视图列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list=(ListView)findViewById(R.id.ListView);
list.setAdapter(新的HalsAdapter(this));
list.setOnItemClickListener(此);
}
类单列{
字符串标题;
字符串描述;
int图像;
单行(字符串标题、字符串描述、整型图像){
this.title=标题;
this.description=描述;
这个图像=图像;
}
}
类HalsAdapter扩展了BaseAdapter{
ArrayList列表;
语境;
HalsAdapter(上下文c){
上下文=c;
list=newarraylist();
Resources res=c.getResources();
String[]titles=res.getStringArray(R.array.titles);
String[]descriptions=res.getStringArray(R.array.descriptions);
int[]图像={
R.drawable.placeholder 1、R.drawable.placeholder 2、R.drawable.placeholder 3、R.drawable.placeholder 4、R.drawable.placeholder 5、R.drawable.placeholder 6、R.drawable.placeholder 7、R.drawable.placeholder 8、R.drawable.placeholder 9、R.drawable.placeholder 10、R.drawable.placeholder 11、R.drawable.placeholder 12、R.drawable.placeholder 13、R.drawable.placeholder14,R.可抽出式。15
};
对于(int i=0;i<15;i++){
添加(新的单行(标题[i]、说明[i]、图像[i]);
}
}
@凌驾
public int getCount(){
返回list.size();
}@凌驾
公共对象getItem(int i){
返回列表。获取(i);
}@凌驾
公共长getItemId(int i){
返回i;
}@覆盖公共视图getView(int i、视图视图、视图组视图组){
LayoutInflater充气器(LayoutInflater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图行=充气机。充气(R.layout.single_行,视图组,false);
TextView title=(TextView)row.findViewById(R.id.TextView);
TextView description=(TextView)row.findViewById(R.id.textView2);
ImageView image=(ImageView)row.findViewById(R.id.ImageView);
单行温度=list.get(i);
title.setText(临时标题);
description.setText(临时说明);
image.setImageResource(临时图像);
返回行;
}
}@凌驾
公共链接(AdapterView)
`
我将onitemclick留空,因为我的方法不起作用,mainactivity不希望我调用onitemclick的另一个方法


我创建了一个名为ListItemActivity的活动,我希望onclick调用它,然后ListItemActivity调用一个test.xml页面。我已经被困了几天,试图找出如何使自定义行可单击。任何帮助都将不胜感激。

发布您的布局
单行
。您是否在布局中使用复选框ut?我将上面的代码添加到onsiteclick中,在listview的任何一行中单击时都会出现错误。当我单击listview中的任何一行时,应用程序就会崩溃。还将发布单行布局。在布局库中没有复选框。您的列表项行已经可以单击,因为
列表。setOnItemClickListener(此)
line。当发生崩溃时,首先要做的是转到Logcat并找到堆栈跟踪。如果不知道如何解释堆栈跟踪,请将其发布到此处,有人会帮助您。错误似乎与未在MainActivity中定义ListViewActivity类有关?
`<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" 
>

<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_margin="10dp"
android:src="@drawable/placeholder1" />

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/imageView"
android:layout_toRightOf="@+id/imageView"
android:text="Large Text"

android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView"
android:layout_alignLeft="@+id/textView"
android:layout_alignParentRight="true"
android:text="Small Text"

android:textAppearance="?android:attr/textAppearanceSmall" />

</RelativeLayout>`