我设法有一个ListView
,其中包含TextView
。如果点击TextView
它会显示ImageButton
,否则第二次点击ImageButton
中的ListView
将会隐藏。我的问题是,我只能在第一次点击时显示ImageButton
,但当我再次点击ImageButton
时,我无法隐藏TextView
。有任何建议可以解决这个问题。
这是我的listview setontimeclicklistener
condimentlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView condimentitem =(TextView)view.findViewById(R.id.condcb);
String citem= condimentitem.getText().toString();
ImageView btntick = (ImageView) view.findViewById(R.id.iv_tick);
int visibility = btntick.getVisibility();
if(visibility == View.VISIBLE)
{
btntick.setVisibility(View.GONE);
}
else if(visibility == View.GONE)
{
btntick.setVisibility(View.VISIBLE);
}
ArrayList<String> data = new ArrayList<String>();
data.add(citem);
String array[] = data.toArray(new String[0]);
for (int j = 0; j < array.length; j++) {
remark.append(String.valueOf(array[j]));
}
}
});
答案 0 :(得分:2)
您可以使用布尔值作为开关,让您使用if语句来回翻转。
boolean isClicked = true;
首次单击使其成为true如果为true则隐藏ImageButton并且第二次单击make boolean as false并隐藏ImageButton
if(true)
ImageBtn.setVisibility(view.VISIBLE)
else
ImageBtn.setVisibility(view.GONE)
答案 1 :(得分:0)
如果点击了textView
,这将有效。但我不确定这是否可行,因为textView在listView中。
condimentitem.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(btntick.getVisibility() == View.VISIBLE){
btntick.setVisibility(View.GONE);
}else{
btntick.setVisibility(View.VISIBLE);
}
}
});
我建议你在ImageView
内写TextView
和adapter
。
正确的方法
将此内容写入适配器类
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.your_activity, parent, false);
.....
condimentim.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(btntick.getVisibility() == View.VISIBLE){
btntick.setVisibility(View.GONE);
}else{
btntick.setVisibility(View.VISIBLE);
}
}
});
}
答案 2 :(得分:0)
我希望这段代码能够运作:
condimentlist.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?>parent,View view,int position,long id){
TextView condimentitem=(TextView)view.findViewById(R.id.condcb);
String citem=condimentitem.getText().toString();
ImageView btntick=(ImageView)view.findViewById(R.id.iv_tick);
if(btntick.getVisibility==View.GONE){
btntick.setVisibility(View.VISIBLE);
}else{
btntick.setVisibility(View.GONE);
}
ArrayList<String>data=new ArrayList<String>();
data.add(citem);
String array[]=data.toArray(new String[0]);
for(int j=0;j<array.length;j++){
remark.append(String.valueOf(array[j]));
}
}
});
答案 3 :(得分:0)
您可以使用 SparseIntArray 来映射listView中每个项目的点击次数
适配器构造函数中的将数组初始化为
public LVAdapter(Context context, int resource, List<String> data) {
super(context, resource);
this.data = data;
sba = new SparseBooleanArray(data.size());
}
然后使用项目的位置作为键
来存储此数组中的点击次数public void onItemClick(...) {
if(!sba.get(position)) // first click
sba.put(position,true);
else{ // second click
// hide the view here
sba.put(position, false); // reset the click if required
}
}