从适配器获取listview中的项目

时间:2015-08-12 13:14:58

标签: android listview android-listview

我需要做一些不寻常的事情。我带着自定义适配器的listview,一切正常。 listview的每个项目都有4个TextView和一个按钮。单击按钮会在我的数据库中执行某些操作,只需告诉他们简化标记值为0-1的问题,如果单击我获得了题字,则更具体地说是有效的。通过单击按钮的背景更改为带有票证的图标。现在我需要创建一个函数,一次验证所有条目,它已准备就绪。但现在我需要更新按钮并给出相应的背景。但我发现无法改变特定项目的每个项目。

如果您想知道我的解释,请咨询我。

布局

<?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"
android:orientation="vertical" >

<TextView
    android:id="@+id/txtNombre"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginTop="10dp"
    android:paddingLeft="10dp"
    android:text="TextView" />

<TextView
    android:id="@+id/txtTicket"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/txtNombre"
    android:paddingLeft="10dp"
    android:text="TextView" />

<TextView
    android:id="@+id/txtOrden"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/txtTicket"
    android:paddingLeft="10dp"
    android:text="" />

<TextView
    android:id="@+id/txtAsiento"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/txtOrden"
    android:paddingLeft="10dp"
    android:visibility="gone"
    android:text="" />

 <TextView
    android:id="@+id/txtNumero"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/txtAsiento"
    android:paddingLeft="10dp"
    android:visibility="gone"
    android:text="" />

<Button
    android:id="@+id/button1"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/txtOrden"
    android:layout_alignParentRight="true"
    android:layout_marginRight="23dp"
    android:background="@drawable/btn_green_small"
    android:maxHeight="48dp"
    android:maxWidth="80dp"
    android:shadowColor="#A8A8A8"
    android:text="Validar"
    android:textColor="#FFFFFF" />

<TextView
    android:id="@+id/txtMensaje"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/button1"
    android:text="SDSDSDS"
    android:layout_marginRight="18dp"
    android:visibility="gone"
    android:textSize="10dp" />

</RelativeLayout>

更改背景按钮

if(rowItem.getValidado()==1){
            holder.btn.setBackgroundResource(R.drawable.icon_big_alert);
            holder.btn.setText("");
            holder.txtMensaje.setText("E-ticket ya validado");
            holder.txtMensaje.setVisibility(View.VISIBLE);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams((int)LayoutParams.WRAP_CONTENT, (int)LayoutParams.WRAP_CONTENT);
            params.width = 50;
            params.height = 50;
            params.rightMargin = 63;
            params.topMargin = 10;
            params.bottomMargin = 5;
            params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            holder.btn.setLayoutParams(params);
 }else{
            holder.btn.setTag(position);
            holder.btn.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    int position=(Integer)v.getTag();
                    RowItem item_click = getItem(position);
                    Connection cn = new Connection();
                    Button b = (Button)v.findViewById(R.id.button1);
                    b.setBackgroundResource(R.drawable.icon_big_check);
                    b.setText("");
   }

这需要做,但是来自活动,而不是来自适配器。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,我可以遍历列表视图中的项目并获得我想要的内容。

@Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        listView = (ListView) findViewById(R.id.listView1);
        View v;
        Button b;
        for (int i = 0; i < listView.getCount(); i++) {
            v = listView.getChildAt(i);
            b = (Button) v.findViewById(R.id.button1);
            b.setBackgroundResource(R.drawable.icon_big_check);
            b.setText("");
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams((int)LayoutParams.WRAP_CONTENT, (int)LayoutParams.WRAP_CONTENT);
            params.width = 50;
            params.height = 50;
            params.rightMargin = 63;
            params.topMargin = 10;
            params.bottomMargin = 5;
            params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            b.setLayoutParams(params);
            System.out.println(b);
        }
    }