Android アプリに ViewHolder を実装しようとしていますが、インポートに関する提案がなければ、ViewHolder を型に解決できないことがわかり続けています。これを回避する方法を知っている人はいますか?
26952 次
3 に答える
32
これは、 a が Android SDK のクラスではないためですViewHolder
。自分で作成します。私が見つけたものに基づいて、aはより大きな領域のビュー (通常は ListView の行ごと) を格納する実装であるため、一種のヘルパー クラスおよびキャッシュ メカニズムです。これは、 Android Developers で見つけた、 に含まれる内容の1 つの例です。ViewHolder
ViewHolder
static class ViewHolder {
TextView text;
TextView timestamp;
ImageView icon;
ProgressBar progress;
int position;
}
ListAdapter
次に、または同様のクラスに実装できます。
于 2012-12-30T01:29:35.963 に答える
1
**Create a Holder class**
protected static class ViewHolderItems
{
private ImageView mStoreImage;
private TextView mStoreName;
}
And use In getView method of adapter
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolderItems viewHolder;
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.coupen_row, null);
viewHolder = new ViewHolderItems();
viewHolder.mStoreImage = (ImageView) convertView.findViewById(R.id.storeImage);
viewHolder.mStoreName = (TextView) convertView.findViewById(R.id.storeName);
convertView.setTag(viewHolder);
}
else
{
viewHolder = (ViewHolderItems) convertView.getTag();
}
return convertView;
}
于 2015-06-25T06:26:20.797 に答える
0
Android サポート ライブラリの一部である RecyclerView.ViewHolder を探しているのかもしれません。
Paul Burke によるこのリンク要旨のコードのように
public static class ItemViewHolder extends RecyclerView.ViewHolder implements
ItemTouchHelperViewHolder {
public final TextView textView;
public final ImageView handleView;
public ItemViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.text);
handleView = (ImageView) itemView.findViewById(R.id.handle);
}
@Override
public void onItemSelected() {
itemView.setBackgroundColor(Color.LTGRAY);
}
@Override
public void onItemClear() {
itemView.setBackgroundColor(0);
}
}
Android RecyclerViewを使用している場合、これは理にかなっています。
この場合、必要に応じてコンテンツを入力できるように、ビューを保持するオブジェクトが必要です。
于 2016-11-13T01:54:21.900 に答える