【问题标题】:Android Layout and Views dynamicallyAndroid 布局和视图动态
【发布时间】:2018-01-10 05:27:51
【问题描述】:

我想显示像

这样的产品颜色

基于服务器响应。单击颜色时,可用尺寸将根据颜色显示

【问题讨论】:

  • 请添加一些代码
  • 你到现在都做了什么。
  • 我不知道。我已附上示例图片
  • 我刚刚尝试了一些方法。但我没有得到预期的输出
  • 尝试使用水平回收器视图会有所帮助

标签: android android-layout android-studio


【解决方案1】:
  • 最好的解决办法是使用RecylcerView
  • 您希望LayoutManager 是水平的
  • 下面是一个例子:

    LinearLayoutManager layoutmanager = new LinearLayoutManager(this, LinearLayoutManager.Horizontal, false)
    
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
    
    recyclerView.setLayoutManager(layoutManager)
    
  • 您还将创建一个类,例如 ProductAdapter,它将扩展 RecyclerView.Adapter,它将在 RecylcerView 中保存 Views

  • ProductAdapter 中,您将指定您希望RecyclerView 拥有的个人RowView

  • 现在您将通过创建此适配器的对象来设置RecyclerView 的适配器

  • 例如:

    ProductAdapter adapter = new ProductAdapter();
    recyclerView.setAdapter(adapter);
    
  • Adapter 看起来像这样:

    public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.MyViewHolder>{
      private List<Product> productList;
      public class MyViewHolder extends RecyclerView.ViewHolder{
        public ImageView productImage;
        public TextView color;
    
        public MyViewholder(View v){
            super(view);
            productImage = (ImageView) view.fincdViewById(R.id.product_image);
            color = (TextView) view.fincdViewById(R.id.product_color);
          }
      }
      public ProductAdapter(List<Product> productList){
          this.productList = productList;
      } 
    
      // Here below you will inflate the individual row view
      @Override
      public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
          View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_view, parent, false);
    
          return new MyViewHolder(itemView);
      }
    
      @Override
      public void onBindViewHolder(MyViewHolder holder, int position){
    
         holder.productImage.setImageURI(productList.get(position).getUri());   
         holder.color.setText(productList.get(position).getColor())
    
      }
    
    }
    
  • 变量productList 将包含您希望将其图像显示为列表的产品

  • 您需要处理服务器响应并将响应放入带有一些网络库的productList 变量中
  • 我建议你使用Volley

【讨论】:

  • 谢谢。但是当点击颜色时,会显示与颜色相关的尺寸。以前我已经从服务器获取尺寸
  • 是的,可以显示与颜色相关的尺寸...如果它回答了您的问题,您能否为我的答案投票并标记为正确,以便其他人知道正确的解决方案
【解决方案2】:

颜色请遵循@Jai 的回答,并在代码下方获取尺寸

在 xml 中创建一个具有垂直方向的线性布局 然后获取您的 json 数组响应的大小。

JSONObject lJsonobjData ;
    JSONArray lJsonArrData ;
LinearLayout linearLayout=(LinearLayout) findViewById(R.id.linearLayout); 

for (int i =0; i<lJsonArrData.length(); i++){
                lJsonobjData = lJsonArrData.getJSONObject(i);
String size=lJsonobjData.getString("size");
TextView tv;
tv = new TextView(this);
tvdata.setText(size);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 2013-06-08
    相关资源
    最近更新 更多