我想要一个可点击的listView项目...对于列表中的每个元素,我有一个可点击的TextView ....问题是它太有限了,用户只能单击TextView到访问元素内部的内容。相反,我希望包含TextView的整个列表项可以被点击,这样用户可以轻松地点击任何地方(不是专门针对文本)。有人可以帮忙吗?谢谢。
import java.util.ArrayList;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class ListViewActivity extends ListActivity implements OnCheckedChangeListener {
TextView label;
CheckBox checkBox;
Context c = this.getApplicationContext();
private ArrayList<Boolean> status = new ArrayList<Boolean>();
public class MyCustomAdapter extends ArrayAdapter<String> {
public MyCustomAdapter(Context context, int textViewResourceId,
String[] objects) {
super(context, textViewResourceId, objects);
for (int i = 0; i < objects.length; i++) {
status.add(false);
}
// TODO Auto-generated constructor stub
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
//return super.getView(position, convertView, parent);
View row = convertView;
if(row==null){
LayoutInflater inflater=getLayoutInflater();
row=inflater.inflate(R.layout.main, parent, false);
}
label=(TextView)row.findViewById(R.id.weekofday);
label.setText(month[position]);
label.setClickable(true);
//View l = (View)row.findViewById(R.id.linearLayout1);
label.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "The rest just clicked in " + position , Toast.LENGTH_SHORT).show();
} });
checkBox=(CheckBox)row.findViewById(R.id.checkBox);
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
String event = null;
if (isChecked)
{
status.set(position, true);
event = " just checked!";
}
else
{
status.set(position, false);
event = " just unchecked!";
}
Toast.makeText(getApplicationContext(), "checkbox " + position +event, Toast.LENGTH_SHORT).show();
}
});
checkBox.setChecked(status.get(position));
return row;
}
}
String[] month = {
"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
/*setListAdapter(new ArrayAdapter<String>(this,
R.layout.row, R.id.weekofday, DayOfWeek));*/
setListAdapter(new MyCustomAdapter(ListViewActivity.this, R.layout.main, month));
}
}
答案 0 :(得分:1)
你可以使用
listview.setOnItemOnClickListener(new OnItemClickListener(....));