У меня есть эта конкретная проблема, которая следует за мной с нескольких дней. Я воспользовался поиском, но не смог найти ни одной статьи, которая бы еще не помогла мне. Я думаю, это тоже проблема моего поиска.
однако вернемся к моему вопросу.
Я использую ResourceCursorAdapter для заполнения моего ListView.
Мой элемент ListView выглядит как ..
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/title_tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/description_tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<CheckBox
android:id="@+id/download_cb"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/some_bt"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ImageButton
android:id="@+id/pdf_ib"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ProgressBar
android:id="@+id/download_pb"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="10dip" />
</RelativeLayout>
Мой адаптер:
private final class ListAdapter extends ResourceCursorAdapter implements
DownloadCallback, OnItemClickListener, OnClickListener {
public ListAdapter(Context context, int layout, Cursor c) {
super(context, layout, c);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
final ItemHolder holder = (ItemHolder) view.getTag();
holder.url = cursor.getString(..);
holder.titleTv.setText(cursor.getString(..));
holder.descriptionTv.setText(cursor.getString(..));
...
if(cursor.getInt(..) == 1) {
holder.progress.setVisible(View.GONE);
}
if(cursor.getInt(...) == 1) {
holder.downloadCb.setEnabled(isConnectedToNet);
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = super.newView(context, cursor, parent);
ItemHolder holder = new ItemHolder();
view.setOnClickListener(this);
holder.titleTv = (TextView) view.findViewById(R.id.title_tv);
holder.descriptionTv = (TextView) view.findViewById(R.id.description_tv);
...
holder.downloadCb.setEnabled(isConnectedToNet);
holder.downloadCb.setOnClickListener(this);
holder.downloadCb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
prepare2Download();
DownItem di = new DownItem();
di.url = holder.url; /// <========= to do this
// start async downloader and notify progressbar "holder.downPb"
Download serverTaskObject = new Download();
serverTaskObject.execute(currDownholder.copy());
holder.downPb.setVisibility(View.GONE); // <======== and this.
}
});
holder.pdfIb = (ImageButton) view.findViewById(R.id.pdf_ib);
holder.pdfIb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// start new activity and load website.
openUrl(holder.url); // <============ or this.
}
});
holder.downPb = (ProgressBar) view.findViewById(R.id.pb_law_download);
holder.downPb.setVisibility(View.GONE);
view.setTag(cachedItem);
return view;
}
...
private static class LawItemCache {
TextView titleTv;
TextView descriptionTv;
...
CheckBox downloadCb;
ImageButton pdfIb;
ProgressBar downPb;
String url;
IProgressListener listener;
}
}
Мой вопрос ..
Когда я нажимаю кнопку или флажок в ListView, я хочу внести некоторые изменения в конкретный держатель представления, например сделать Progressbar видимым или пропавшим.
Я пока не могу понять, как мне установить держатель View в моем адаптере для внесения изменений.
Надеюсь, я объяснил это достаточно хорошо, чтобы понять суть моей проблемы.