-3

What I've done so far is detecting mp3 files and display it with a checkbox in lisview, my problem is once i checked the item and scrolled down, the item that i checked before is lost.

This is my code:

this is the adapter

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;
 }
}

and this is the 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;
    }
}
DVK
  • 126,886
  • 32
  • 213
  • 327
hehe0595
  • 1
  • 3

1 Answers1

0

Keep track of all the checked items and using that set selection of check boxes in getView method. Whenever the selection is changes update your values which keep track of all the selections.

This might help you...

When scrolling custom ListView, the checkbox value changes

Community
  • 1
  • 1
Rohit5k2
  • 17,948
  • 8
  • 45
  • 57