2012-04-08 19 views
0

我正在嘗試使用可點擊的項目列表...對於列表中的每個元素,我都有可點擊的TextView ....問題在於它太侷限了用戶只需點擊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

看看這個問題,它可以幫助你:http://stackoverflow.com/questions/2026873/android-way-to-appear-bordered- text-on-the-textview – MByD 2012-04-08 18:52:43

+0

所以你正在使用'OnClickListener'?如果是這樣,你做錯了。設置一個'OnItemClickListener'到你的'ListView'並且應該這樣做。 – Cristian 2012-04-08 18:52:54

+0

我沒有正常的ViewList,我繼承ArrayAdapter並重寫getView方法來分別在我的listView上設置每個項目...我有兩個項目。一個Dropbox和一個Textview ...我希望TextView可以在整個項目上點擊。 – 2012-04-08 18:57:57

回答

1

可以使用

listview.setOnItemOnClickListener(new OnItemClickListener(....)); 
+0

正如你所看到的,我沒有像這樣的listview變量...檢查我的代碼上面 – 2012-04-09 05:13:24

+0

你正在擴展ListViewActivity所以 this..setOnItemOnClickListener() – MAC 2012-04-09 08:31:10

+0

否我沒有擴展ListViewActivity。我正在擴展ListActivity – 2012-04-09 11:44:50