不能点击多列自定义ListView的项目,在使用我在ListView内编辑文本? [英] Can't click on multi column Custom listView items, when i using edit text inside the listView?
问题描述
我有这样数量,物品,price.if在自定义列表三栏自定义的ListView现在用的TextView三列,它的点击是正确worked.But,如果我用两个TextView的一EDITTEXT,那么我不能能够点击该item.i只能编辑EDITTEXT field.but不能点击。
公共类TicketActivity延伸活动{
TextView的T1;
TextView的T2;
ListView的L1;
TextView的T6;
公共无效的onCreate(捆绑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); //获取表没有价值从编辑文本
意图的i1 = getIntent();
束B = i1.getExtras();
INT NUM = b.getInt(表编号:);
字符串PNO = Integer.toString(NUM);
t1.setText(PNO); //获取客户的价值从编辑文本 意向I2 = getIntent();
束B1 = i2.getExtras();
INT NUM1 = b1.getInt(客人:);
字符串PNO1 = Integer.toString(NUM1);
t2.setText(PNO1);
//列表<串GT; ST = GlobalClass.myval; // ArrayAdapter<串GT; ADA =新ArrayAdapter<串GT;(这一点,android.R.layout.simple_list_item_1,ST); l1.setAdapter(新EfficientAdapter(TicketActivity.this));
l1.setOnItemClickListener(新OnItemClickListener(){
公共无效onItemClick(适配器视图<>母公司,观景,INT位置,长的id){
的String [] S1 =(字符串[])parent.getItemAtPosition(位置); Toast.makeText(getApplicationContext(),选择:+ S1,Toast.LENGTH_SHORT).show();
}
});
}
私有静态类EfficientAdapter延伸BaseAdapter {
私人LayoutInflater mInflater; 公共EfficientAdapter(上下文的背景下){
mInflater = LayoutInflater.from(上下文); //执行EfficientAdapter的
}
公众诠释的getCount(){ 返回GlobalClass.myval.size();//<GlobalClass.myvals.size()?GlobalClass.myval.size():GlobalClass.myvals.size(); }
公共对象的getItem(INT位置){ 返回的位置;
}
众长getItemId(INT位置){ 返回的位置;
}
公共查看getView(INT位置,查看convertView,父母的ViewGroup){
ViewHolder持有人;
的String [] = stockArr新的String [GlobalClass.myval.size()];
stockArr = GlobalClass.myval.toArray(stockArr);
的String [] = stockArr1新的String [GlobalClass.myvals.size()];
stockArr1 = GlobalClass.myvals.toArray(stockArr1);
如果(convertView == NULL){
convertView = mInflater.inflate(R.layout.list_ticket,NULL);
持有人=新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(保持器);
}
其他{
支架=(ViewHolder)convertView.getTag();
}
holder.Text1.setText(1);
holder.Text2.setText(stockArr [位置]);
holder.Text3.setText(stockArr1 [位置]);
返回convertView; } }
静态类ViewHolder {
文本1的EditText;
TextView的文本2;
TextView的文本3; } }
在你的onCreate()试试这个:
l1.setItemsCanFocus(真);
注意这一定行之后完成
L1 =(ListView控件)findViewById(R.id.listView1);
,否则你会得到一个NullPointerException异常。
现在,你已经告诉你的ListView让你的项目集中,你要侦听的在您的孩子的使用
//在你的ListView项目
setOnFocusChangeListener(新OnFocusChangeListener(){
@覆盖
公共无效onFocusChange(视图V,布尔hasFocus){
// TODO:处理焦点位置 }
});
I have three column custom listView like Qty,items,price.if In the custom list am using textView for three columns ,its clickable is properly worked.But if i using two textView and one editText,then i cant able to click the item.i can edit only the editText field.but could not Clickable.
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();//<GlobalClass.myvals.size()?GlobalClass.myval.size():GlobalClass.myvals.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;
}
}
Try this in your onCreate():
l1.setItemsCanFocus(true);
Note that this must be done after the line
l1=(ListView)findViewById(R.id.listView1);
or else you'll get a NullPointerException.
Now that you've told your ListView "let your items focus," you have to listen for that in your children using
// In items of your ListView
setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO: handle focus here
}
});
这篇关于不能点击多列自定义ListView的项目,在使用我在ListView内编辑文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!