これらのリンクを参照しましたlink、link、link、link
しかし、私の問題は解決されていません。この問題に関して多くの質問があることは知っていますが、私の問題は
私は4つのクラスA、B、C、Dを持っています
クラスAから、インストールされているすべてのアプリがリストビューにリストされているクラスBに移動します。クラス B では、Packagelist をクラス c (BaseAdapter クラス) に送信し、ユーザーが選択したアプリをクラス A に渡します。
だから私の問題は、どこで、またはどのようにPOJOクラスを使用して、インストールされたアプリをbaseadapterクラスに渡し、次にチェックされたすべての値(文字列のアプリ名)を取得してクラスAに渡すかです。また、チェックされたステータスを維持する方法チェックボックス。
助けてください。
カスタム アダプタ クラス
import java.util.List;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;
public class AppListAdapter extends BaseAdapter {
List<PackageInfo> packageList;
Activity context;
PackageManager packageManager;
boolean[] itemChecked;
int checkBoxCounter = 0;
int checkBoxInitialized = 0;
public AppListAdapter(Activity context, List<PackageInfo> packageList,
PackageManager packageManager) {
super();
this.context = context;
this.packageList = packageList;
this.packageManager = packageManager;
itemChecked = new boolean[packageList.size()];
}
private class ViewHolder {
TextView apkName;
CheckBox ck1;
}
public int getCount() {
return packageList.size();
}
public Object getItem(int position) {
return packageList.get(position);
}
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// final ViewHolder holder;
checkBoxCounter = 0;
checkBoxInitialized = 0;
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.apklist_item, null);
final ViewHolder holder = new ViewHolder();
holder.apkName = (TextView) convertView
.findViewById(R.id.ApkList_tvappname);
holder.ck1 = (CheckBox) convertView
.findViewById(R.id.ApkList_checkBox);
holder.ck1
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
AppsSelected element = (AppsSelected) holder.ck1
.getTag();
element.setSelected(buttonView.isChecked());
if (checkBoxCounter <= checkBoxInitialized) {
// increment counter, when we scroll the List it
// execute onCheckedChanged everytime so by
// using this stuff we can maintain the state
checkBoxCounter++;
} else {
element = (AppsSelected) holder.ck1.getTag();
element.setSelected(buttonView.isChecked());
if (element.isSelected())
Toast.makeText(
context,
"You selected " + element.getName(),
Toast.LENGTH_LONG).show();
else
Toast.makeText(
context,
"Not selected " + element.getName(),
Toast.LENGTH_LONG).show();
}
}
});
convertView.setTag(holder);
holder.ck1.setTag(packageList.get(position));
} else {
((ViewHolder) convertView.getTag()).ck1.setTag(packageList.get(position));
}
ViewHolder holder = (ViewHolder) convertView.getTag();
PackageInfo packageInfo = (PackageInfo) getItem(position);
Drawable appIcon = packageManager
.getApplicationIcon(packageInfo.applicationInfo);
String appName = packageManager.getApplicationLabel(
packageInfo.applicationInfo).toString();
appIcon.setBounds(0, 0, 40, 40);
holder.apkName.setCompoundDrawables(appIcon, null, null, null);
holder.apkName.setCompoundDrawablePadding(15);
holder.apkName.setText(appName);
return convertView;
}
}