2012-10-29 4 views
0

나는 데이터베이스의 내용 목록을 표시하는 코드를 작성했으며 perticular 항목을 클릭하고 클릭 한 항목의 이름을 가져올 수도 있습니다.하지만 구현하고 싶습니다. 체크 박스와 체크 항목의 값을 얻기 위해 수행하는 방법 하란은 사용자 지정 목록 row.xml사용자 지정 목록보기에서 확인란을 구현하려면

private void displayListView() { 
     final Cursor cursor = dbHelper.fetchAllRecords(); 
     String[] columns = new String[] { 
       RecordsDbAdapter.KEY_NAME, 
       RecordsDbAdapter.KEY_BIRTHDAY, 

     }; 
     int[] to = new int[] { 
       R.id.name, 
       R.id.birthdate, 
     }; 
     dataAdapter = new SimpleCursorAdapter(
       this, R.layout.row, 
       cursor, 
       columns, 
       to); 
     ListView listView = (ListView) findViewById(R.id.list); 
     listView.setAdapter(dataAdapter); 

     listView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       name = ((TextView) view.findViewById(R.id.name)) .getText().toString(); 
       BirtDate = ((TextView) view.findViewById(R.id.birthdate)) .getText().toString(); 
       Log.d("*************", name); 
       Info=name+ " " +BirtDate+ " "+ "years"; 
       edt.setText(Info,TextView.BufferType.EDITABLE); 
       topaste=edt.getText().toString(); 

      } 
     }); 
    } 
을 촬영 한
+0

확인 => [listview에서 여러 항목 선택] (http://www.google.co.in/search?q=android+select+multi+item+from+listview) –

답변

0

당신이 당신의 문제를 찾기 위해 아래의 코드를 참조 할 수 있습니다 :

package com.windrealm.android; 

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class PlanetsActivity extends Activity 
{ 

    private ListView mainListView; 
    private Planet[] planets; 
    private ArrayAdapter<Planet> listAdapter; 
    private Button check; 
    private Context context; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     context = PlanetsActivity.this; 
     check = (Button) findViewById(R.id.check); 
     // Find the ListView resource. 
     mainListView = (ListView) findViewById(R.id.mainListView); 

     // When item is tapped, toggle checked properties of CheckBox and 
     // Planet. 
     mainListView 
       .setOnItemClickListener(new AdapterView.OnItemClickListener() 
       { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View item, 
          int position, long id) 
        { 
         Planet planet = listAdapter.getItem(position); 
         planet.toggleChecked(); 
         PlanetViewHolder viewHolder = (PlanetViewHolder) item 
           .getTag(); 
         viewHolder.getCheckBox().setChecked(planet.isChecked()); 
        } 
       }); 

     // Create and populate planets. 
     planets = (Planet[]) getLastNonConfigurationInstance(); 
     if (planets == null) 
     { 
      planets = new Planet[] 
      { new Planet("Mercury"), new Planet("Venus"), new Planet("Earth"), 
        new Planet("Mars"), new Planet("Jupiter"), 
        new Planet("Saturn"), new Planet("Uranus"), 
        new Planet("Neptune"), new Planet("Ceres"), 
        new Planet("Pluto"), new Planet("Haumea"), 
        new Planet("Makemake"), new Planet("Eris") }; 
     } 
     ArrayList<Planet> planetList = new ArrayList<Planet>(); 
     planetList.addAll(Arrays.asList(planets)); 

     // Set our custom array adapter as the ListView's adapter. 
     listAdapter = new PlanetArrayAdapter(this, planetList); 
     mainListView.setAdapter(listAdapter); 

     check.setOnClickListener(new OnClickListener() 
     { 

      @Override 
      public void onClick(View view) 
      { 
       for (int i = 0; i < listAdapter.getCount(); i++) 
       { 
        Planet planet = listAdapter.getItem(i); 
        if (planet.isChecked()) 
        { 
         Toast.makeText(context, 
           planet.getName() + " is Checked!!", 
           Toast.LENGTH_SHORT).show(); 
        } 
       } 

      } 
     }); 
    } 

    /** Holds planet data. */ 
    private static class Planet 
    { 
     private String name = ""; 
     private boolean checked = false; 

     public Planet() 
     { 
     } 

     public Planet(String name) 
     { 
      this.name = name; 
     } 

     public Planet(String name, boolean checked) 
     { 
      this.name = name; 
      this.checked = checked; 
     } 

     public String getName() 
     { 
      return name; 
     } 

     public void setName(String name) 
     { 
      this.name = name; 
     } 

     public boolean isChecked() 
     { 
      return checked; 
     } 

     public void setChecked(boolean checked) 
     { 
      this.checked = checked; 
     } 

     public String toString() 
     { 
      return name; 
     } 

     public void toggleChecked() 
     { 
      checked = !checked; 
     } 
    } 

    /** Holds child views for one row. */ 
    private static class PlanetViewHolder 
    { 
     private CheckBox checkBox; 
     private TextView textView; 

     public PlanetViewHolder() 
     { 
     } 

     public PlanetViewHolder(TextView textView, CheckBox checkBox) 
     { 
      this.checkBox = checkBox; 
      this.textView = textView; 
     } 

     public CheckBox getCheckBox() 
     { 
      return checkBox; 
     } 

     public void setCheckBox(CheckBox checkBox) 
     { 
      this.checkBox = checkBox; 
     } 

     public TextView getTextView() 
     { 
      return textView; 
     } 

     public void setTextView(TextView textView) 
     { 
      this.textView = textView; 
     } 
    } 

    /** Custom adapter for displaying an array of Planet objects. */ 
    private static class PlanetArrayAdapter extends ArrayAdapter<Planet> 
    { 

     private LayoutInflater inflater; 

     public PlanetArrayAdapter(Context context, List<Planet> planetList) 
     { 
      super(context, R.layout.simplerow, R.id.rowTextView, planetList); 
      // Cache the LayoutInflate to avoid asking for a new one each time. 
      inflater = LayoutInflater.from(context); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) 
     { 
      // Planet to display 
      Planet planet = (Planet) this.getItem(position); 

      // The child views in each row. 
      CheckBox checkBox; 
      TextView textView; 

      // Create a new row view 
      if (convertView == null) 
      { 
       convertView = inflater.inflate(R.layout.simplerow, null); 

       // Find the child views. 
       textView = (TextView) convertView 
         .findViewById(R.id.rowTextView); 
       checkBox = (CheckBox) convertView.findViewById(R.id.CheckBox01); 

       // Optimization: Tag the row with it's child views, so we don't 
       // have to 
       // call findViewById() later when we reuse the row. 
       convertView.setTag(new PlanetViewHolder(textView, checkBox)); 

       // If CheckBox is toggled, update the planet it is tagged with. 
       checkBox.setOnClickListener(new View.OnClickListener() 
       { 
        public void onClick(View v) 
        { 
         CheckBox cb = (CheckBox) v; 
         Planet planet = (Planet) cb.getTag(); 
         planet.setChecked(cb.isChecked()); 
        } 
       }); 
      } 
      // Reuse existing row view 
      else 
      { 
       // Because we use a ViewHolder, we avoid having to call 
       // findViewById(). 
       PlanetViewHolder viewHolder = (PlanetViewHolder) convertView 
         .getTag(); 
       checkBox = viewHolder.getCheckBox(); 
       textView = viewHolder.getTextView(); 
      } 

      // Tag the CheckBox with the Planet it is displaying, so that we can 
      // access the planet in onClick() when the CheckBox is toggled. 
      checkBox.setTag(planet); 

      // Display planet data 
      checkBox.setChecked(planet.isChecked()); 
      textView.setText(planet.getName()); 

      return convertView; 
     } 

    } 

    public Object onRetainNonConfigurationInstance() 
    { 
     return planets; 
    } 
} 
0

사용자 지정 어댑터 클래스에 코드를 추가하면 문제가 해결됩니다.

@Override 
public int getViewTypeCount() { 
    // TODO Auto-generated method stub 
    return mName.size(); 
} 

@Override 
public int getItemViewType(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 
관련 문제