ListView with button and check mark?

Posted by jgelderloos on Stack Overflow See other posts from Stack Overflow or by jgelderloos
Published on 2012-10-30T02:51:57Z Indexed on 2012/10/30 5:01 UTC
Read the original article Hit count: 392

Filed under:
|
|

So I have looked through a lot of other answers but have not been able to get my app to work how I want it. I basically want the list view that has the text and check mark to the right, but then an addition button to the left. Right now my list view shows up but the check image is never changed.

Selector:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:state_selected="true" 
        android:drawable="@drawable/accept_on" />
    <item 
        android:drawable="@drawable/accept" />
</selector>

Row xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout"
    android:orientation="horizontal" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:background="#EEE">

    <ImageButton 
        android:id="@+id/goToMapButton"
        android:src="@drawable/go_to_map"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"    />

    <TextView 
        android:id="@+id/itemName"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:textColor="#000000"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:layout_weight="1"     />

    <Button 
        android:id="@+id/checkButton"
        android:background="@drawable/item_selector"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="right"     />
</LinearLayout>

MapAdapter:

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MapAdapter extends ArrayAdapter<String>{

    Context context; 
    int layoutResourceId;    
    String data[] = null;
    LayoutInflater inflater;
    LinearLayout layout;

    public MapAdapter(Context context, int layoutResourceId, String[] data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
        inflater = LayoutInflater.from(context);
    }

    @Override
    public String getItem(int position) {
        return data[position];
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = new ViewHolder();

        if(convertView == null)
        {
            convertView = inflater.inflate(R.layout.map_item_row, null);
            layout = (LinearLayout)convertView.findViewById(R.id.layout);
            holder.map = (ImageButton)convertView.findViewById(R.id.goToMapButton);
            holder.name = (TextView)convertView.findViewById(R.id.itemName);
        //holder.check = (Button)convertView.findViewById(R.id.checkButton);

            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }

        layout.setBackgroundColor(0x00000004);
        holder.name.setText(getItem(position));

        return convertView;
    }

    static class ViewHolder
    {
        ImageButton map;
        TextView name;
        Button check;
    }
}

© Stack Overflow or respective owner

Related posts about android

Related posts about android-listview