2012-04-27 14 views
0

カスタマイズしたリストビューにチェックボックスを追加しようとしていますが、その方法はわかりません。カスタムリストビューにチェックボックスを挿入する方法

私は以下のコードを持っている:

ListObject.java

package br.com.eduvm.xurrascalc; 

public class ListObject { 

private String texto; 
private int iconeRid; 

    public ListObject() { 

} 

    public ListObject(String texto, int iconeRid) { 

    this.texto = texto; 
    this.iconeRid = iconeRid; 
} 

public int getIconeRid() { 

    return iconeRid; 
} 

public void setIconeRid(int iconeRid) { 

    this.iconeRid = iconeRid; 
} 

public String getTexto() { 

    return texto; 
} 

public void setTexto(String texto) { 

    this.texto = texto; 
} 
} 

ListAdapter.java

package br.com.eduvm.xurrascalc; 

import java.util.ArrayList; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.CheckBox; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class ListAdapter extends BaseAdapter { 

private LayoutInflater mInflater; 
private ArrayList<ListObject> itens; 

public ListAdapter(Context context, ArrayList<ListObject> itens) { 

    // Itens que preencheram o listview 
    this.itens = itens; 

    // responsavel por pegar o Layout do item. 
    mInflater = LayoutInflater.from(context); 
} 

public int getCount() { 

    return itens.size(); 
} 

public ListObject getItem(int position) { 

    return itens.get(position); 
} 

public long getItemId(int position) { 

    return position; 
} 

public View getView(int position, View view, ViewGroup parent) { 

    ListObject item = itens.get(position); 

    view = mInflater.inflate(R.layout.itens_lista, null); 

    ((TextView) view.findViewById(R.id.text)).setText(item.getTexto()); 
    ((ImageView) view.findViewById(R.id.imagemview)).setImageResource(item.getIconeRid()); 

    return view; 
} 
} 

List.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="horizontal" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" 
     android:padding="5sp" > 

     <ImageView 
      android:id="@+id/imagemview" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" /> 

     <TextView 
      android:id="@+id/text" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="5sp" 
      android:gravity="center_vertical" 
      android:textColor="#FFF" /> 

    </LinearLayout> 

</LinearLayout> 

チェックボックスiこのリストの項目は?

答えて

0

これはあなたのリスト内の個々の行のレイアウトになり

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" > 

<CheckBox 
    android:id="@+id/lstChkbox" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/lstText" 
    android:textSize="30px" 
    android:layout_weight="1" /> 

<ImageView 
    android:id="@+id/listImage" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" /> 

あなたは、メインリストアクティビティのレイアウトは次のようなものになります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:drawSelectorOnTop="false" 
    android:choiceMode="multipleChoice" 
    /> 

あなたをBaseAdapter getViewメソッドを拡張するクラスは、次のようなものです:

public View getView(int position、View convertView、ViewGroup parent){ ViewHolder vHolder = null;

if (convertView != null) 
     vHolder = (ViewHolder) convertView.getTag();        // convertView is been recycled 
    else { 
     convertView = (View) mInflater.inflate(R.layout.list_item, null);   // Set content of new View with list_item.xml 

     vHolder = new ViewHolder(); 
     vHolder.checkBox = ((CheckBox) convertView.findViewById(R.id.lstChkbox)); // Getting pointers 
     vHolder.textView = ((TextView) convertView.findViewById(R.id.lstText)); 
     vHolder.imageView = ((ImageView) convertView.findViewById(R.id.listImage)); 

     vHolder.checkBox.setOnCheckedChangeListener(this);       // Setting Listeners 

     convertView.setTag(vHolder); 
    } 

    vHolder.checkBox.setId(position);            // This is part of the Adapter APi 
    vHolder.textView.setId(position);            // Do not delete !!! 
    vHolder.imageView.setId(position); 


    if (mItems.get(position).getChecked()) {          // Setting parameters for the View from our mItems list 
     vHolder.checkBox.setChecked(true); 
    } else { 
     vHolder.checkBox.setChecked(false); 
    } 

    vHolder.textView.setText(mItems.get(position).getText()); 
    vHolder.imageView.setImageDrawable(mItems.get(position).getmImage()); 

    return convertView; 
} 

public static class ViewHolder { 
    CheckBox checkBox; 
    TextView textView; 
    ImageView imageView; 
} 

/* 
* Ok for this test but Toast are going to show every time the row comes into View 
*/ 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    Log.d(TAG, "Checked"); 
    int position = buttonView.getId(); 

    if (isChecked) { 
     mItems.get(position).setChecked(true); 
     Toast.makeText(context, mItems.get(position).getText(), Toast.LENGTH_LONG).show(); 
    } else { 
     mItems.get(buttonView.getId()).setChecked(false); 
    } 
} 
0

レイアウトitens_lista.xmlにチェックボックスを追加するだけです。

チェックボックスを追加するだけです。あなたはティにもっと何かしたいですか?

関連する問題