簡體   English   中英

在Android中點擊按鈕動態添加新的cardview

[英]Add new cardview dynamically on button click in android

我正在將cardview與recyclerview一起使用,並帶有諸如字符串數組之類的硬編碼值。 但是現在我想在每個按鈕單擊上添加新的cardview,用戶輸入值並選擇圖像並在應用程序退出時保留所有cardviews。我的意思是說cardview應該僅一個一個地添加。任何解決方案請指導我。

cardview適配器類

public class CardViewDataAdapter extends RecyclerView.Adapter<CardViewDataAdapter.ViewHolder> {

private static ArrayList<FeddProperties> dataSet;
private static Context context;

public CardViewDataAdapter(Context context, ArrayList<FeddProperties> os_versions) {
    this.context = context;
    dataSet = os_versions;
}


@Override
public CardViewDataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

    View itemLayoutView = LayoutInflater.from(viewGroup.getContext()).inflate(
            R.layout.card_view, null);

    // create ViewHolder

    ViewHolder viewHolder = new ViewHolder(itemLayoutView);
    return viewHolder;
}

@Override
public void onBindViewHolder(CardViewDataAdapter.ViewHolder viewHolder, int i) {

    FeddProperties fp = dataSet.get(i);

    viewHolder.vehicleNumber.setText(fp.getTitle());
    viewHolder.iconView.setImageResource(fp.getThumbnail());
    viewHolder.feed = fp;
}

@Override
public int getItemCount() {
    return dataSet.size();
}


public static class ViewHolder extends RecyclerView.ViewHolder {

    public TextView vehicleNumber;
    public ImageView iconView;
    public FeddProperties feed;

    public ViewHolder(View itemLayoutView) {
        super(itemLayoutView);

        vehicleNumber = (TextView) itemLayoutView
                .findViewById(R.id.vehiclenumber);
        iconView = (ImageView) itemLayoutView
                .findViewById(R.id.iconId);

        itemLayoutView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(v.getContext(), InformingUser.class);
                v.getContext().startActivity(intent);

                ((MainActivity) context).getSupportFragmentManager().beginTransaction().replace
                        (R.id.containerView, new InformingUser()).commit();

                //Toast.makeText(v.getContext(), "os version is: " + feed.getTitle(), Toast.LENGTH_SHORT).show();
            }
        });
    }

}

Java檔案...。

private void initContrls()
{
    SharedPreferences prefs = context.getSharedPreferences(MY_PREFS_NAME, 0);
    vehiclecatory = prefs.getString("vehicle_category", "");
    vehicletype = prefs.getString("vehicle_type", "");

    String versions =  prefs.getString("city", "")+" "+prefs.getString("dis", "")+" "+prefs.getString("number", "");
    String vehicleCompany = prefs.getString("company", "")+" "+prefs.getString("model", "");

    if(vehiclecatory.equals("1"))
    {
        if (vehicletype.equals("1"))
        {
            icons = R.drawable.contwowheel;
        }
        else if (vehicletype.equals("2"))
        {
            icons = R.drawable.comfourwheel;
        }

        else if (vehicletype.equals("3"))
        {
            icons = R.drawable.comheavy;
        }
    }
    else if (vehiclecatory.equals("2"))
    {
        if (vehicletype.equals("1"))
        {
            icons = R.drawable.nontwowheel;
        }
        else if (vehicletype.equals("2"))
        {
            icons = R.drawable.nonfourwheel;
        }
        else if (vehicletype.equals("3"))
        {
            icons = R.drawable.nonheavy;
        }
    }

    os_versions = new ArrayList<FeddProperties>();
    for (int i = 0; i < 2; i++) {
        FeddProperties feed = new FeddProperties();

        feed.setTitle(versions);
        feed.setVehicleCompany(vehicleCompany);
        feed.setThumbnail(icons);
        os_versions.add(feed);
    }
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(context));
    mAdapter = new CardViewDataAdapter(context,os_versions);
    recyclerView.setAdapter(mAdapter);
}

這里有一個示例,可以動態添加cardview。在這個示例中,cardview的創建方式是:

for (int index = 0; index < 20; index++) {
            DataObject obj = new DataObject("Some Primary Text " + index,
                    "Secondary " + index);
            results.add(index, obj);
        }

但您可以插入onClick動作:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM