gpt4 book ai didi

android - 如何仅在某些行上显示图像按钮

转载 作者:太空宇宙 更新时间:2023-11-03 11:12:41 25 4
gpt4 key购买 nike

我有一个带有自定义适配器的 ListView。我想根据列表中的条件在每一行上设置 ImageButton 的可见性。但是,这些行与我的设想不一致。

在下面的示例中,我有一个名为 ColorInfo 的类,其属性为 count。每当计数大于 0 时,我想显示图像。对于虚拟数据,我用 ColorInfo 的 20 个元素填充数组,每个偶数项的计数都大于 0。但是,当我运行该应用程序时,我没有看到 ImageButton在交替行上

下面是一个完整的例子:

演示 Activity

public class DemoActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

ColorInfo[] clr= new ColorInfo[20];

for(int i=0;i<20;i++){
ColorInfo clrInfo = new ColorInfo();
if (i%2 == 0) {
clrInfo.count = 5;
}
clr[i] = clrInfo;
}
((ListView)findViewById(R.id.list)).setAdapter(new MyAdapter(this, 0, clr));
}

private class MyAdapter extends ArrayAdapter<ColorInfo> {
ViewHolder holder;
LayoutInflater inflater;
public MyAdapter(Context context, int textViewResourceId,ColorInfo[] objects) {
super(context, textViewResourceId, objects);
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;

final ColorInfo item = getItem(position);

if(itemView == null){
itemView = inflater.inflate(R.layout.row, null);
holder = new ViewHolder();
holder.editButton = (ImageButton) itemView.findViewById(R.id.some_button);
itemView.setTag(holder);
}
else
holder = (ViewHolder)itemView.getTag();

if (item.count>0)
holder.editButton.setVisibility(View.VISIBLE);

return itemView;
}
private class ViewHolder{
ImageButton editButton;
}
}
private static class ColorInfo{
int count = 0;
}
}

主.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>

</LinearLayout>

行.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="test"/>

<ImageButton
android:id="@+id/some_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#000000"
android:visibility="gone"
android:src="@drawable/ic_some_img"/>
</LinearLayout>

更新

我找到了答案 here显然,因为行被 ArrayAdapter 重用,所以最好也有一个 else 条件。

最佳答案

以下是我如何将图像设置在特定位置:

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

View vi = convertView;

if (vi == null)
vi = inflater.inflate(R.layout.row, null);

ImageView iv = (ImageView)vi.findViewById(R.id.someImageButton);

if (position == 0) {



iv.setVisibility(View.VISIBLE);

}
if (position == 1) {

//Something

}
if (position == 2) {

//Something

}
if (position == 3) {



iv.setVisibility(View.VISIBLE);

}

return vi;
}
}

也许这就是您要找的。

关于android - 如何仅在某些行上显示图像按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22395307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com