私は、(主なアクティビティから到達した)アクティビティに対してListViewを設定するためにカスタムアダプタを使用しています。私は定義されたレイアウトファイル(ListViewの各行のためのレイアウト)を使用していないと考えて、ボタン(および後でEditText)を動的に追加しようとしています。それが機能するように見えない(最後の5行)。ここに私の活動コードは次のとおりです。Android ListViewカスタムアダプタボタンを動的に追加しますか?
public class SubSelectActivity extends ListActivity {
private List<Subs> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayAdapter<Subs> adapter = new DialogAdapter(this, list);
setListAdapter(adapter);
getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(SubSelectActivity.this, "TEST", Toast.LENGTH_SHORT).show();
CheckBox checkBox = (CheckBox) view.findViewById(R.id.check);
checkBox.toggle();
if (checkBox.isChecked()) {
imageTF.add(images.get(position));
} else {
imageTF.remove(images.get(position));
}
}
});
Button myButton = new Button(this);
myButton.setText("Push Me");
LinearLayout ll = new LinearLayout(this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
ll.addView(myButton, lp);
}
そしてここでは、私のアダプタが設定されている:
public class DialogAdapter extends ArrayAdapter<SubSelectActivity.Subs> {
private final List<SubSelectActivity.Subs> list;
private final Activity context;
static class ViewHolder {
protected TextView name;
protected CheckBox checkBox;
}
public DialogAdapter(Activity context, List<SubSelectActivity.Subs> list) {
super(context, R.layout.row, list);
this.context = context;
this.list = list;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = null;
// reuse views
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
view = inflater.inflate(R.layout.row, null);
// configure view holder
final ViewHolder viewHolder = new ViewHolder();
viewHolder.name = (TextView) view.findViewById(R.id.text1);
viewHolder.checkBox = (CheckBox) view.findViewById(R.id.check);
view.setTag(viewHolder);
} else {
view = convertView;
}
final ViewHolder holder = (ViewHolder) view.getTag();
holder.name.setText(list.get(position).getName());
holder.checkBox.setChecked(list.get(position).IsChecked());
return view;
}
}
を誰も私が私のListView以下のウィジェットを追加する方法を見つけ出す手助けすることはできますか?
EDIT:私のrow.xmlはタイプCheckableRelativeLayoutは次のとおりです。
public class CheckableRelativeLayout extends RelativeLayout implements
Checkable {
private boolean isChecked;
private List<Checkable> checkableViews;
public CheckableRelativeLayout(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
initialise(attrs);
}
public CheckableRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
initialise(attrs);
}
public CheckableRelativeLayout(Context context, int checkableId) {
super(context);
initialise(null);
}
/*
* @see android.widget.Checkable#isChecked()
*/
public boolean isChecked() {
return isChecked;
}
/*
* @see android.widget.Checkable#setChecked(boolean)
*/
public void setChecked(boolean checked) {
if (isChecked != checked) {
isChecked = checked;
refreshDrawableState();
}
}
/*
* @see android.widget.Checkable#toggle()
*/
public void toggle() {
this.isChecked = !this.isChecked;
for (Checkable c : checkableViews) {
c.toggle();
}
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
final int childCount = this.getChildCount();
for (int i = 0; i < childCount; ++i) {
findCheckableChildren(this.getChildAt(i));
}
}
/**
* Read the custom XML attributes
*/
private void initialise(AttributeSet attrs) {
this.isChecked = false;
this.checkableViews = new ArrayList<Checkable>(5);
}
/**
* Add to our checkable list all the children of the view that implement the
* interface Checkable
*/
private void findCheckableChildren(View v) {
if (v instanceof Checkable) {
this.checkableViews.add((Checkable) v);
}
if (v instanceof ViewGroup) {
final ViewGroup vg = (ViewGroup) v;
final int childCount = vg.getChildCount();
for (int i = 0; i < childCount; ++i) {
findCheckableChildren(vg.getChildAt(i));
}
}
}
}
SOLUTION:
このリンクは、私が個人的に考える私のためAdd buttons to a listactivity
あなたは 'ListActivity'を使用していますか? – Apoorv
@Apoorvはい申し訳ありませんが、私のフォーマットはうんざりしていて、クラスのトップを追加しませんでした。はい、私はListActivityを使用しています。 – blurbs78
@Apoorvうん、解決策を見つけた。 ListActivityは私がルックアップする必要があったものでした。ヒントをありがとう。元の投稿を編集しました。 – blurbs78