2014-12-28 3 views
-3

Что я делал до сих пор, это обнаружение mp3-файлов и отображение его с помощью флажка в lisview, моя проблема - когда я проверил элемент и прокрутил вниз, элемент, который я проверил ранее, потерян.android: checkbox in listview

Это мой код:

это адаптер

package com.example.cameraapp; 

import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.CheckBox; 
import android.widget.TextView; 
public class CustomAdapter extends ArrayAdapter<Model>{ 
Model[] modelItems = null; 
Context context; 
public CustomAdapter(Context context, Model[] resource) { 
super(context,R.layout.songlayout,resource); 
// TODO Auto-generated constructor stub 
this.context = context; 
this.modelItems = resource; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
// TODO Auto-generated method stub 
LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
convertView = inflater.inflate(R.layout.songlayout, parent, false); 
TextView name = (TextView) convertView.findViewById(R.id.songsTexView); 
CheckBox cb = (CheckBox) convertView.findViewById(R.id.checkBox1); 
name.setText(modelItems[position].getName()); 
if(modelItems[position].getValue() == 1) 
cb.setChecked(true); 
else 
cb.setChecked(false); 
return convertView; 
} 
} 

и это mainactivity

package com.example.cameraapp; 

import java.io.File; 
import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.content.Context; 
import android.content.ContextWrapper; 
import android.os.Bundle; 
import android.os.Environment; 
import android.view.Menu; 
import android.widget.ListView; 
public class FinalChoice extends Activity { 
ListView lv; 
int chuba=0; 
Model[] modelItems; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.listview1hold); 
lv = (ListView) findViewById(R.id.listView1); 


String mp3Directory = "/Music"; 
String directoryPath= Environment.getExternalStorageDirectory().getAbsolutePath()+mp3Directory; 
List<File> list = getMP3Files(directoryPath); 
modelItems = new Model[list.size()]; 
//print in LogCat the list of .mp3: 
for(int a=0;a<list.size();a++){ 
modelItems[a]=new Model(list.get(a).getName(), 0); 

} 


CustomAdapter adapter = new CustomAdapter(this, modelItems); 
lv.setAdapter(adapter); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
// Inflate the menu; this adds items to the action bar if it is present. 
getMenuInflater().inflate(R.menu.main, menu); 
return true; 
} 



public List<File> getMP3Files(String directory) { 
     List<File> files = new ArrayList<File>(); 
     File folder = new File(directory); 
     for (File file : folder.listFiles()) { 
      if (file.isFile()) { 
       if (file.getName().endsWith(".mp3") || file.getName().endsWith(".MP3")) { 
        files.add(file); 
       } 
      } 
     } 
     return files; 
    } 
} 

ответ

0

Следите за все проверенные элементы и с помощью этого набора выбора проверки коробки в getView метод. Всякий раз, когда вы выбираете изменения, обновляйте свои значения, которые отслеживают все варианты выбора.

Это может помочь вам ...

When scrolling custom ListView, the checkbox value changes

 Смежные вопросы

  • Нет связанных вопросов^_^