0

我正在尝试有一个可点击的项目列表视图...对于列表中的每个元素,我都有一个可点击的 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));



 }













 }
4

1 回答 1

1

您可以使用

listview.setOnItemOnClickListener(new OnItemClickListener(....));
于 2012-04-08T18:57:28.827 回答