我有一个自定义Listview
,其中一行Button
我想在Listview
之外添加一个按钮,以设置所有行上按钮的可见性
我怎样才能做到这一点?
我不想使用重新加载所有数据的notifyDataSetChanged 任何人都知道这个??
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/notice_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="16dp" />
<TextView
android:id="@+id/notice_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/notice_title"
android:textSize="8dp" />
<ImageButton
android:id="@+id/btn_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_delete"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:visibility="invisible" />
</RelativeLayout>
Adapter_notice.java
public class Adapter_notice extends ArrayAdapter<notice> {
private Context context;
private int listRow;
private notice[] notice;
public List<String> listTag = new ArrayList<String> ();
public Adapter_notice(Context context, int listRow, notice[] Rows) {
super(context, listRow, Rows);
this.listRow = listRow;
this.context = context;
this.notice = Rows;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
//Log.d("edittext", "items !empty="+listTag.contains(listTag.get(position)));
LayoutInflater inflater = LayoutInflater.from(context);
row = inflater.inflate(listRow,parent, false);
notice row_notice = notice[position];
TextView tv1 = (TextView) row.findViewById(R.id.notice_title);
tv1.setText(row_notice.gettitle());
TextView tv2 = (TextView) row.findViewById(R.id.notice_date);
tv2.setText("Date:"+row_notice.getdate());
ImageButton btn = (ImageButton) row.findViewById(R.id.btn_delete);
return row;
}
}
答案 0 :(得分:3)
我有一个自定义列表视图,其中一行有1个按钮,我想添加一个 Listview外部的按钮可以设置所有按钮上的可见性 行如何实现这一目标?
我不想使用notifyDataSetChanged重新加载所有数据任何人 知道了这个??
创建包含 ListView 和按钮的布局。 ListView已将高度设置为WRAP_CONTENT
。
然后为Button创建onClickListener,onClick()隐藏ListView:
btn.setOnClickListener(new View.OnClickListener {
public void onClick(View v) {
if (listView.getVisibility() == ListView.VISIBLE) {
listView.setVisibility(ListView.INVISIBLE);
}
else {
listView.setVisibility(ListView.VISIBLE);
}
}
});
注意: INVISIBLE
和GONE
之间的区别在于GONE
属性不会在布局中发生。
答案 1 :(得分:1)
on button click
事件添加
yourListView.setVisiblity(View.INVISIBLE);
隐藏列表视图
答案 2 :(得分:1)
在列表外按钮的onClick()上,执行类似
的操作listview.setAdapter(changedAdapter)
其中changedAdapter将是一组新的适配器OR
adapter.setButtonVisibility(false);
listview.setAdapter(adapter).
在Adapter类中创建一个新方法,该方法根据getView将返回视图设置一个布尔值(如果boolean为true,则Button字段将变为不可见)
public void setButtonVisibility(boolean hideButton){
this.hideButton = hideButton;
}
getView(){
...
if(hideButton){
//hide button
}
}
答案 3 :(得分:0)
使用
ListView.setVisibility(View.GONE / View.VISIBLE / View.INVISIBLE);
由于您希望暂时disable
可见度使用View.INVISIBLE
和View.VISIBLE
答案 4 :(得分:0)
在决策按钮的OnClickListener()
中,再次为列表设置适配器。
并在List之外保留一个公共布尔变量,通过验证布尔变量来决定特定按钮的可见性。