В настоящее время мы работаем над небольшой игрой для устройств Android, и у меня возникла небольшая проблема: я хочу открыть всплывающее окно, в котором отображаются все оставшиеся плитки.Но по какой-то причине во всплывающем окне ничего не отображается, что я пропускаю?Обратите внимание, что listForAdapter
- это ArrayList, включающий тестовые данные, объект с плиткой и сумму.Похоже, это не вызывает никаких проблем.
/**Inflate and position the bag's Layout*/
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.bag,null);
float density = this.getResources().getDisplayMetrics().density;
final PopupWindow pw = new PopupWindow(layout, (int)density*350, (int)density*450, true);
/**Set up button and listener to close the bag*/
((Button) layout.findViewById(R.id.close)).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
pw.dismiss();
}
});
/**set up the bag's RecyclerView*/
pw.showAtLocation(layout, Gravity.CENTER, 0, (int) density*10);
RecyclerView recyclerView = (RecyclerView) layout.findViewById(R.id.my_recycler_view);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
BagRecyclerAdapter adapter = new BagRecyclerAdapter(this, listForAdapter);
recyclerView.setAdapter(adapter);
В BagRecyclerAdapter наша идея состоит в том, чтобы открыть его в обзоре переработчика, который включает в себя разметку сетки, но в настоящее время он просто остается белым:
public class BagRecyclerAdapter extends RecyclerView.Adapter<BagRecyclerAdapter.ViewHolder> {
private Context mContext;
private List<GameBoardActivity.TileCount> bData;
private LayoutInflater bInflater;
/**
* fetched bag is fed into the constructor
*/
BagRecyclerAdapter(Context context, List<GameBoardActivity.TileCount> data) {
mContext=context;
this.bInflater = LayoutInflater.from(context);
this.bData = data;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView counter;
public ImageView tileInfo;
public ViewHolder(View itemView) {
super(itemView);
counter = itemView.findViewById(R.id.info_number);
tileInfo= itemView.findViewById(R.id.info_image);
}
}
/**
* inflates the cell layout from xml when needed
*/
@NonNull
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = bInflater.inflate(R.layout.bag_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
GameBoardActivity.TileCount curr = bData.get(i);
switch(curr.tile.getShape()){
case 0: viewHolder.tileInfo.setImageResource(R.drawable.circle); break;
case 1: viewHolder.tileInfo.setImageResource(R.drawable.frame); break;
case 2: viewHolder.tileInfo.setImageResource(R.drawable.plus); break;
case 3: viewHolder.tileInfo.setImageResource(R.drawable.domino); break;
case 4: viewHolder.tileInfo.setImageResource(R.drawable.point); break;
case 5: viewHolder.tileInfo.setImageResource(R.drawable.pointhollow); break;
case 6: viewHolder.tileInfo.setImageResource(R.drawable.ring); break;
case 7: viewHolder.tileInfo.setImageResource(R.drawable.spade); break;
case 8: viewHolder.tileInfo.setImageResource(R.drawable.cross); break;
case 9: viewHolder.tileInfo.setImageResource(R.drawable.sun); break;
case 10: viewHolder.tileInfo.setImageResource(R.drawable.triangle); break;
case 11: viewHolder.tileInfo.setImageResource(R.drawable.rectangle); break;
}
switch(curr.tile.getColor()){
case 0: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xffe6194B, 0)); break;
case 1: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xff3cb44b, 0)); break;
case 2: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xffffe119, 0)); break;
case 3: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xff4364d8, 0)); break;
case 4: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xfff58231, 0)); break;
case 5: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xffaaffc3, 0)); break;
case 6: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xff469990, 0)); break;
case 7: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xff8904b1, 0)); break;
case 8: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xfff032e6, 0)); break;
case 9: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xffa9a9a9, 0)); break;
case 10: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xff9A6324, 0)); break;
case 11: viewHolder.tileInfo.setColorFilter(new LightingColorFilter(0xffffffff, 0)); break;
}
viewHolder.counter.setText(Integer.toString(curr.getCount()));
}
@Override
public int getItemCount() {
return bData.size();
}
}
и два необходимых XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/popup_element"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorWhite"
>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/close"
android:layout_marginBottom="462dp">
<LinearLayout
android:id="@+id/recLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:scrollbars="none" />
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="@string/close_bag"
/>
</RelativeLayout>
Номер 2:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:padding="5dp"
android:layout_width="50dp"
android:layout_height="50dp">
<ImageView
android:id="@+id/info_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:background="@color/colorAccent"/>
<TextView
android:id="@+id/info_number"
android:layout_width="10dp"
android:layout_height="10dp"
android:gravity="bottom|right"
android:background="@color/colorGrey"/>
</LinearLayout>