2014-12-28 30 views
-3

我到目前爲止所做的是檢測mp3文件,並在lisview中用複選框顯示它,我的問題是我檢查了項目並向下滾動,之前檢查的項目丟失了。android: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; 
    } 
} 

回答