2012-04-27 4 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> 

내가 할 수있는 방법 삽입 :

나는 다음과 같은 코드가있다

체크 박스 이 목록에있는 항목은 무엇입니까?

답변

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 메소드를 확장 한 클래스는 다음과 같은 일을합니다 :

공용 뷰 getView (int 위치, 뷰 convertView, ViewGroup 부모) { 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에 체크 박스를 추가하기 만하면됩니다.

확인란을 추가하기 만하면됩니다. 당신은 ti에 더 많은 것을하고 싶습니까?

관련 문제