私は5つ星評価システムとのインタフェースのような火口を行うためにAndroidSwipeableCardStackを使用しています。画像を変更するボタンをクリックしたとき。イメージは現在のカードではなく3枚後に変更されます。アンドロイド:アダプターでsetImageResource変更画像3位以降の
これは私が使用したプロジェクトです:https://github.com/wenchaojiang/AndroidSwipeableCardStack
私はそれがrecyclerviewは通常どおり、それは次のカードを事前にロードして実行することですと仮定が、私は本当にわかりません。以下
この私のアダプタでは、あなたは、私は1つ星の評価画像ボタンonclicklistnerにsetimageresourceを呼び出す下部に見ることができます。私はLog.dを設定し、ボタンのクリックはすぐにクリックで登録されますが、画像リソースの変更は3枚のカードがスワイプされた後にのみ表示されます。
編集:だから私は関係なく、私はインポートしたプロジェクトの、私のアダプタのみArrayAdatperを延長していることに気づきました。だから私は問題がgetViewメソッドにある可能性があり、私は何か他のものを上書きする必要があるかもしれないと推測しました。しかし重要な点は、私は位置を記録することによってgetView内の位置をチェックし、何かがスワイプされずに位置0,1,2,3と言い足りました。これはsetImageResourceのオフセットに似ていますので、私はそれらが相互にリンクされていると思いますが、残念ながらそれは私を答えに近づけません。
ありがとうございました。
public class SongPreviewCardsDataAdapter extends ArrayAdapter<SongDatabaseMappingAdapter> {
public SongPreviewCardsDataAdapter(Context context, int resource) {
super(context, resource);
}
ImageButton oneStarRating;
@Override
public View getView(int position, final View contentView, ViewGroup parent) {
// Initialise Song Views
SongDatabaseMappingAdapter item = getItem(position);
TextView songName = (TextView) (contentView.findViewById(R.id.songNameTextView));
songName.setText(item.getSongTitle());
com.mikhaellopez.circularimageview.CircularImageView songImage = (CircularImageView) contentView.findViewById(R.id.songImageView);
String ImageURL = (item.getPictureURL());
Picasso
.with(this.getContext())
.load(ImageURL)
.into(songImage);
// Initialise Rating Buttons
oneStarRating = (ImageButton) contentView.findViewById(R.id.ratingButton1);
// Create OnClickListners for Ratings Buttons
oneStarRating.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
oneStarRating.setImageResource(R.drawable.starfull);
Log.d("Star", "Star Clicked");
}
});
return contentView;
}
}
お返事ありがとうございます。私は最後の部分まで理解する。私はgetter/setterを作成し、if文でgetViewメソッドを変更しました。これは完全に機能しています。今私が困惑しているのはOnClickListnerのやり方です。それはCardStackです。私のcreateViewで私は以下を行います:mCardStack =(CardStack)view.findViewById(R.id.cardstackcontainer);あなたが言ったように私はmCardStackを行うことができます。setOnClickListener();しかし、スター自体がクリックされた場合、星がどのように変化するかは分かりません(5つの星があります)。カード上のどこかをクリックすると星が変わるのだろうか? –
申し訳ありませんが、私は 'CardStack'が実際にはリストそのものであることを理解していませんでした。私の更新された答えを見てください。 –
私を殺してくれてありがとう、ありがとう。私はそれを働かせるために2つの変更を加えなければなりませんでした(そしてこれらはおそらくパッドの練習です)ので、私はそれらを変更する必要があるかどうか、私に教えてください。私がgetOneStar/setOneStarを宣言したとき、私は実際にそれが偽であると言わなければなりませんでした。あるいは、私はnullポインタを持っていました。そして、あなたがoneStarRating.setImageDrawable(null)を置く場所もあります。私は再びそれがnullpointerエラーを持っているので、それをコメントしなければならなかった。関係なく、それは働いているありがとう! –