Java 上/下滚动时缺少签入复选框
大家好,我的申请有问题。选中我的复选框,一旦我选中复选框并向下/向上滚动它,复选框就消失了,我不知道这是怎么发生的。有人能帮我吗?谢谢你的帮助:) 这是我的密码:Java 上/下滚动时缺少签入复选框,java,android,Java,Android,大家好,我的申请有问题。选中我的复选框,一旦我选中复选框并向下/向上滚动它,复选框就消失了,我不知道这是怎么发生的。有人能帮我吗?谢谢你的帮助:) 这是我的密码: public class TaskKiller extends Activity { private static final String TAG = "TaskKillerActivity"; TaskListAdapter adapter; ListView lv; private List&l
public class TaskKiller extends Activity {
private static final String TAG = "TaskKillerActivity";
TaskListAdapter adapter;
ListView lv;
private List<TaskObject> getTasksToKill() {
List<TaskObject> tol = new ArrayList<TaskObject>();
for (int i = 0; i < adapter.getCount(); i++) {
TaskObject to = adapter.getItem(i);
if (to.isToKill()) {
tol.add(to);
}
}
return tol;
}
@Override
protected void onDestroy() {
super.onDestroy();
}
public void loadRunningProcesses() {
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appinfolist = activityManager
.getRunningAppProcesses();
Log.d(TAG, "AppInfoList Size: " + appinfolist.size());
for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : appinfolist) {
TaskObject runningtask = new TaskObject();
runningtask.setPid(runningAppProcessInfo.pid);
runningtask.setProcessName(runningAppProcessInfo.processName);
adapter.addTask(runningtask);
}
}
class TaskObject {
int pid;
String processName;
private boolean toKill;
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getProcessName() {
return processName;
}
public void setProcessName(String processName) {
this.processName = processName;
}
public boolean isToKill() {
return toKill;
}
public void setToKill(boolean toKill) {
this.toKill = toKill;
}
}
class TaskListAdapter extends BaseAdapter {
private static final String TAG = "TaskListAdapter";
ArrayList<TaskObject> list;
Context context;
public TaskListAdapter(Context context) {
Log.d(TAG, "created new task list adapter");
this.context = context;
if (list == null) {
list = new ArrayList<TaskKiller.TaskObject>();
}
}
public void addTask(TaskObject taskObject) {
list.add(taskObject);
}
public void clearTasks() {
list.clear();
Log.d(TAG, "list size:" + list.size());
this.notifyDataSetChanged();
}
public int getCount() {
return list.size();
}
public TaskObject getItem(int position) {
return list.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView,
ViewGroup parent) {
RelativeLayout rl = new RelativeLayout(context);
TextView textPid = new TextView(context);
textPid.setId(222222);
textPid.setText(Integer.toString(getItem(position).getPid()));
TextView textName = new TextView(context);
textName.setId(333333);
textName.setText(getItem(position).getProcessName());
CheckBox chckKill = new CheckBox(context);
chckKill.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// is chkIos checked?
if (((CheckBox) v).isChecked()) {
getItem(position).setToKill(true);
}
}
});
}
公共类TaskKiller扩展活动{
私有静态最终字符串标记=“TaskKillerActivity”;
任务列表适配器;
ListView lv;
私有列表getTasksToKill(){
List tol=新的ArrayList();
对于(inti=0;i
我认为问题在于您没有在复选框中使用项目的toKill状态。当您滚动时,它将使用getView重新绘制,并重置为空
加
在构造函数之后。我认为问题在于您没有在复选框中使用项的toKill状态。当您滚动时,它将使用getView重新绘制,并重置为空 加
构造函数之后。有一个错误,无法从布尔值转换为TaskKiller.TaskObject。我将把这段代码放在哪里?因为我将它放在这段代码之后?CheckBox chckKill=new CheckBox(上下文);是吗right@RinggoLacunaDeJesus可能错过了一次机会(.再试一次。是的,在复选框后添加。非常感谢您的帮助,它可以正常工作。:)我可以再问一次问题吗?我的代码中显示的是一个包名,而不是包名。因为在我的代码中,它是一个出现在ex:com.google.android中的包名。我想要的是像google或tomcatsir一样的名称。我又遇到了一个问题,先生。当我取消选中复选框并上下滚动时,复选框又出现了。谢谢你的帮助我已经发布了这个问题,但他们关闭了它,因为我不知道它被限制在这里发布,不是相同的问题,而是相同的解释和细节。:))没有人回答我的问题。我不知道为什么。不管怎样,电池充电动画怎么样?我的意思是当电池充电时。有一个错误无法从布尔值转换为TaskKiller.TaskObject。我将把这个代码放在哪里?因为我把它放在这个代码之后?复选框chckKill=new复选框(上下文)我是吗right@RinggoLacunaDeJesus可能缺少一个(.重试。是的,请在复选框后添加该复选框。非常感谢您的帮助,它可以正常工作。:)我可以再问一次问题吗?我的代码中显示的是一个包名,而不是包名。因为在我的代码中,它是一个出现在ex:com.google.android中的包名。我想要的是像google或tomcatsir一样的名称。我又遇到了一个问题,先生。当我取消选中复选框并上下滚动时,复选框又出现了。谢谢你的帮助又是lp。我已经发布了这个问题,但他们已经结束了
chckKill.setChecked( ((TaskObject) getItem(position) ).isToKill());