Android 如何在多栏列表视图中启用可单击操作?
如何在多栏列表视图中启用可单击操作?如果我在多列自定义listView中使用EditText,但无法选择listView项。因为列表项不可单击。如果我不使用EditText,则可以单击列表项。但是如果我在自定义listview中使用了EditText,那么itemClick是不允许的Android 如何在多栏列表视图中启用可单击操作?,android,Android,如何在多栏列表视图中启用可单击操作?如果我在多列自定义listView中使用EditText,但无法选择listView项。因为列表项不可单击。如果我不使用EditText,则可以单击列表项。但是如果我在自定义listview中使用了EditText,那么itemClick是不允许的 public class TicketActivity extends Activity{ TextView t1; TextView t2; ListView l1; TextView t6;
public class TicketActivity extends Activity{
TextView t1;
TextView t2;
ListView l1;
TextView t6;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.ticket);
t1=(TextView)findViewById(R.id.textView3);
t2=(TextView)findViewById(R.id.textView5);
l1=(ListView)findViewById(R.id.listView1);
//Get the Table no Value From Edit Text
Intent i1=getIntent();
Bundle b=i1.getExtras();
int num=b.getInt("Table No:");
String pno=Integer.toString(num);
t1.setText(pno);
//Get The Guest Value From Edit Text
Intent i2=getIntent();
Bundle b1=i2.getExtras();
int num1=b1.getInt("Guest:");
String pno1=Integer.toString(num1);
t2.setText(pno1);
// List<String> st=GlobalClass.myval;
//ArrayAdapter<String> ada = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1,st);
l1.setAdapter(new EfficientAdapter(TicketActivity.this));
l1.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent,View view,int position,long id){
String[] s1 = (String[]) parent.getItemAtPosition(position);
Toast.makeText(getApplicationContext(), "Selected:"+ s1,Toast.LENGTH_SHORT).show();
}
});
}
private static class EfficientAdapter extends BaseAdapter{
private LayoutInflater mInflater;
public EfficientAdapter(Context context){
mInflater=LayoutInflater.from(context);
// implementation of EfficientAdapter
}
public int getCount() {
return GlobalClass.myval.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position ;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
String[] stockArr = new String[GlobalClass.myval.size()];
stockArr = GlobalClass.myval.toArray(stockArr);
String[] stockArr1=new String[GlobalClass.myvals.size()];
stockArr1=GlobalClass.myvals.toArray(stockArr1);
if(convertView==null){
convertView=mInflater.inflate(R.layout.list_ticket, null);
holder=new ViewHolder();
holder.Text1=(EditText) convertView.findViewById(R.id.editText1);
holder.Text2=(TextView) convertView.findViewById(R.id.textView2);
holder.Text3=(TextView) convertView.findViewById(R.id.textView3);
convertView.setTag(holder);
}
else{
holder=(ViewHolder)convertView.getTag();
}
holder.Text1.setText("1");
holder.Text2.setText(stockArr[position]);
holder.Text3.setText(stockArr1[position]);
return convertView;
}
}
static class ViewHolder{
EditText Text1;
TextView Text2;
TextView Text3;
}
}
公共课堂活动扩展活动{
文本视图t1;
文本视图t2;
列表视图l1;
文本视图t6;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.ticket);
t1=(TextView)findViewById(R.id.textView3);
t2=(TextView)findViewById(R.id.textView5);
l1=(ListView)findViewById(R.id.listView1);
//从编辑文本中获取表无值
Intent i1=getIntent();
Bundle b=i1.getExtras();
int num=b.getInt(“表号:”);
字符串pno=Integer.toString(num);
t1.setText(pno);
//从编辑文本中获取来宾值
Intent i2=getIntent();
Bundle b1=i2.getExtras();
intnum1=b1.getInt(“来宾:”);
字符串pno1=Integer.toString(num1);
t2.setText(pno1);
//List st=GlobalClass.myval;
//ArrayAdapter ada=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,st);
l1.设置适配器(新的EfficientAdapter(TicketActivity.this));
l1.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串[]s1=(字符串[])parent.getItemAtPosition(位置);
Toast.makeText(getApplicationContext(),“Selected:”+s1,Toast.LENGTH\u SHORT.show();
}
});
}
私有静态类EfficientAdapter扩展BaseAdapter{
私人停车场;
公共效率适配器(上下文){
mInflater=LayoutInflater.from(上下文);
//EfficientAdapter的实现
}
public int getCount(){
返回GlobalClass.myval.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
String[]stockArr=新字符串[GlobalClass.myval.size()];
stockArr=全局类.myval.toArray(stockArr);
String[]stockArr1=新字符串[GlobalClass.myvals.size()];
stockArr1=全局类myvals.toArray(stockArr1);
if(convertView==null){
convertView=mInflater.充气(R.layout.list\u票证,空);
holder=新的ViewHolder();
holder.Text1=(EditText)convertView.findViewById(R.id.editText1);
holder.Text2=(TextView)convertView.findViewById(R.id.textView2);
holder.Text3=(TextView)convertView.findViewById(R.id.textView3);
convertView.setTag(支架);
}
否则{
holder=(ViewHolder)convertView.getTag();
}
holder.Text1.setText(“1”);
holder.Text2.setText(stockArr[位置]);
holder.Text3.setText(stockArr1[位置]);
返回视图;
}
}
静态类视窗夹{
编辑文本1;
TextView Text2;
TextView Text3;
}
}
试试这个
android:focusable="true"
您必须对listview使用setOnItemClickListener()。您可以按以下方式使用它
l1.setOnItemClickListener(yourListener);
private OnItemClickListener yourListener = new OnItemClickListener() {
private String getSelectedItemOfList;
public void onItemClick(AdapterView<?> view, View view1, int pos,
long arg3) {
// TODO Auto-generated method stub
getSelectedItemOfList = yourlist.get(pos).toString; // Here you can get selected item of listview.
}
}
l1.setOnItemClickListener(您的Listener);
private OnItemClickListener yourListener=新建OnItemClickListener(){
私有字符串getSelectedItemOfList;
公共视图单击(适配器视图、视图视图1、内部位置、,
长arg3){
//TODO自动生成的方法存根
getSelectedItemOfList=yourlist.get(pos).toString;//在这里可以获取listview的选定项。
}
}
希望这有帮助。让我知道它是否有效