如何在列表视图中设置可聚焦的成员元素?



我有一个自定义列表视图,里面有 3 个编辑文本和一个按钮。

通过定义,我不希望编辑文本是可编辑的,所以我设置

android:focusable="true"

但是在某些时候,我希望单击该按钮应该使它们可编辑

所以在getView(我正在使用自定义适配器(中,我将onClick侦听器设置为:

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

Log.d("Reached: ","Getview");


ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflator = LayoutInflater.from(getContext());
convertView = inflator.inflate(R.layout.list_view, null);
viewHolder = new ViewHolder();
viewHolder.product_nameET= (EditText) convertView.findViewById(R.id.product_nameET);
viewHolder.priceET= (EditText) convertView.findViewById(R.id.priceET);
viewHolder.quantity_availableET= (EditText) convertView.findViewById(R.id.quantity_availableET);
viewHolder.edit_button= (Button) convertView.findViewById(R.id.edit_rowButton);
//viewHolder.product_nameET.setFocusable(true);
final ViewHolder vh=viewHolder;
viewHolder.edit_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//lv.getChildAt(position).setFocusable(true);
vh.product_nameET.setFocusable(true);//////This line here has no effect

}
});

convertView.setTag(viewHolder);
convertView.setTag(R.id.product_nameET, viewHolder.product_nameET);
convertView.setTag(R.id.priceET, viewHolder.priceET);
convertView.setTag(R.id.quantity_availableET, viewHolder.quantity_availableET);
convertView.setTag(R.id.edit_rowButton, viewHolder.edit_button);

}
else {
viewHolder = (ViewHolder) convertView.getTag();
}

viewHolder.product_nameET.setText(product_namesList.get(position));
viewHolder.priceET.setText(priceList.get(position));
viewHolder.quantity_availableET.setText(quantity_availableList.get(position));



return convertView;

}

但这没有任何效果。请帮助我是安卓新手。

尝试根据条件设置以下两个具有真(启用(/假(禁用(值的属性:

对于启用输入的编辑文本:

vh.product_nameET.setFocusable(true);
vh.product_nameET.setFocusableInTouchMode(true);

对于禁用输入的编辑文本:

vh.product_nameET.setFocusable(false);
vh.product_nameET.setFocusableInTouchMode(false);

通过editText.getKeyListener()获取EditTextKeyListener值,并存储在KeyListener类型变量中,该变量将包含可编辑的属性值:

KeyListener variable;
variable = editText.getKeyListener(); 

EditText的可编辑属性设置为false为:

edittext.setKeyListener(null);

现在将EditText的可编辑属性设置为true为:

editText.setKeyListener(variable);  

注意:在 XML 中,EditText的默认可编辑属性应为true

试试这个你需要启用按钮。

viewHolder.edit_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//lv.getChildAt(position).setFocusable(true);
viewHolder.product_nameET.setEnabled(true);
}
});

相关内容

  • 没有找到相关文章

最新更新