gpt4 book ai didi

java - 弹出窗口中的Android GridLayout不显示数据

转载 作者:行者123 更新时间:2023-11-30 05:11:19 28 4
gpt4 key购买 nike

我们目前正在为 Android 设备开发一款小游戏,我遇到了一个小问题:我想打开一个弹出窗口,显示所有剩余的图 block 。但由于某种原因,弹出窗口不显示任何内容,我错过了什么?请注意,listForAdapter 是一个包含测试数据的 ArrayList,一个具有 Tile 和数量的对象。它似乎不会引起任何问题。

  /**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,我们的想法是在包含网格布局的回收 View 中打开它,但目前它只是简单地保持白色:

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>

最佳答案

作为@MikeM。上面提到,解决方案是删除第一个部分(不是我在评论中错误地说的第二个部分)XML:

<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">

...

        </LinearLayout>
</ScrollView>

原来是这样

关于java - 弹出窗口中的Android GridLayout不显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53697142/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com