【问题标题】:android:checkbox in listviewandroid:列表视图中的复选框
【发布时间】:2015-02-24 16:57:30
【问题描述】:

到目前为止,我所做的是检测 mp3 文件并在 lisview 中用复选框显示它,我的问题是一旦我检查了该项目并向下滚动,我之前检查的项目就丢失了。

这是我的代码:

这是适配器

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

这是主要活动

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

【问题讨论】:

    标签: android android-listview android-checkbox


    【解决方案1】:

    跟踪所有选中的项目并在getView 方法中使用复选框的集合选择。只要选择更改,更新您的值,可以跟踪所有选择。

    这可能对你有帮助...

    When scrolling custom ListView, the checkbox value changes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-26
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多