程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

我如何创建一个新的 CardView?

发布于2022-12-05 23:34     阅读(1032)     评论(0)     点赞(20)     收藏(2)


我正在尝试向我的应用程序添加新卡片视图/新卡片(对不起,我是新手)。现在,一切正常,但我该如何添加更多?我还想知道如何在 FAB click 上执行此操作。这是我的代码

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

    private List<WeatherData> weatherDataList;

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //?
        View view1 = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_weather_card,parent,false);
        View view2 = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_weather_card,parent,false);
        return new ViewHolder(view2);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        WeatherData weatherData = this.weatherDataList.get(position);
        holder.locationTextView.setText(weatherData.getName());
        holder.tempTextView.setText("Temperature: "+weatherData.getWeatherDetails().getTemperature());
        holder.humidTextView.setText("Humidity: "+ weatherData.getWeatherDetails().getHumidity());


    }

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

    protected static class ViewHolder extends RecyclerView.ViewHolder{

        public TextView locationTextView;
        public TextView tempTextView;
        public TextView humidTextView;
        public ViewHolder(View v){
            super(v);
            locationTextView = (TextView) v.findViewById(R.id.locationTextView);
            tempTextView = (TextView) v.findViewById(R.id.tempTextView);
            humidTextView= (TextView) v.findViewById(R.id.humidText);
        }




    }

    public WeatherListAdapter(List<WeatherData> weatherDataList){
        this.weatherDataList = weatherDataList;

    }
}

如果我需要添加更多内容来帮助您解决问题,请发表评论。谢谢! WeatherListActivity-

private RecyclerView recyclerView;
List<WeatherData> mWeatherDataList;
WeatherListAdapter mAdpapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_weather_list);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    mWeatherDataList = new ArrayList<WeatherData>();








    final WeatherApiManager weatherApiManager = new WeatherApiManager();
    weatherApiManager.getWeatherByCoordinate(35.744644099999995, -78.86395929999999, new WeatherCallback() {
        @Override
        public void weatherDownloadCompleted(boolean success, WeatherData weatherData) {
            List<WeatherData> weatherDataList = new ArrayList<WeatherData>();
           // weatherDataList.add(weatherData);
          //  weatherDataList.add(weatherData);

            mAdpapter = new WeatherListAdapter(weatherDataList);






            //why does this have to be in here?
            recyclerView.setAdapter(mAdpapter);

        }
    });



    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            final WeatherApiManager weatherApiManager = new WeatherApiManager();
            weatherApiManager.getWeatherByCoordinate(35.744644099999995, -78.86395929999999, new WeatherCallback() {
                @Override
                public void weatherDownloadCompleted(boolean success, WeatherData weatherData) {
                    List<WeatherData> weatherDataList = new ArrayList<WeatherData>();

                    weatherDataList.add(weatherData);

                    mAdpapter = new WeatherListAdapter(weatherDataList);


                    //why does this have to be in here?
                    recyclerView.setAdapter(mAdpapter);


                }
            });

            updateUI();


        }
    });


}

解决方案


为了在您的 RecyclerView 中使用 CardView(然后附加您之前拥有的 TextView),我会这样做:

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

    private List<WeatherData> weatherDataList;

    public TextView locationTextView;
    public TextView tempTextView;
    public TextView humidTextView;

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // Here we are inflating the CardView
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_weather_card, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        WeatherData weatherData = this.weatherDataList.get(position);
        CardView cardView = holder.cardView;

        // We then add these items to each CardView
        locationTextView = (TextView) cardView.findViewById(R.id.locationTextView);
        tempTextView = (TextView) cardView.findViewById(R.id.tempTextView);
        humidTextView= (TextView) cardView.findViewById(R.id.humidText);

        locationTextView.setText(weatherData.getName());
        tempTextView.setText("Temperature: "+weatherData.getWeatherDetails().getTemperature());
        humidTextView.setText("Humidity: "+ weatherData.getWeatherDetails().getHumidity());
    }

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

    protected static class ViewHolder extends RecyclerView.ViewHolder{
        public CardView cardView;

        public ViewHolder(View v){
            super(v);
            // Each ViewHolder only has a CardView (even though that CardView has child TextViews
            cardView = (CardView) v;
        }

    }

    public WeatherListAdapter(List<WeatherData> weatherDataList){
        this.weatherDataList = weatherDataList;
    }
}

然后您只需确保adapter_weather_card.xml您的布局中有 的<TextView>项目locationTextViewtempTextView这样humidTextView它们就可以全部显示在每个 CardView 上。

使用此 WeatherListAdapter 的示例活动

public class MainActivity extends AppCompatActivity {

    RecyclerView mRecyclerView;
    WeatherListAdapter mAdapter;
    List<WeatherData> mList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mList = new ArrayList<>();
        // Just a bunch of sample data we're using to populate the RecyclerView
        mList.add(new WeatherData("Sacramento", "88", "60"));
        mList.add(new WeatherData("Dallas", "96", "40"));
        mList.add(new WeatherData("Orlando", "80", "85"));
        mList.add(new WeatherData("Seattle", "68", "78"));

        mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        // In your WeatherListAdapater class you pass a List to the constructor, this is the
        // list that contains all the WeatherData and the list we use to add new CardViews.
        mAdapter = new WeatherListAdapter(mList);
        mRecyclerView.setAdapter(mAdapter);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Adding a new item to our WeatherData list with the FAB
                // This item will become a new CardView
                // We can similarly remove CardViews by calling remove()
                mList.add(new WeatherData("Boston", "67", "50"));
                // Updating the UI after adding the CardView so it shows up
                updateUI();
            }
        });
    }

    private void updateUI() {
        // The list we passed to the mAdapter was changed so we have to notify it in order to update
        mAdapter.notifyDataSetChanged();
    }

}

此活动的示例 XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_margin="20dp">
    </android.support.v7.widget.RecyclerView>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_menu_add"/>

</RelativeLayout>

示例 CardView XML

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_margin="10dp"
    app:cardBackgroundColor="@android:color/holo_blue_light">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingRight="10dp"
        android:paddingLeft="10dp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/locationTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <TextView
            android:id="@+id/tempTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <TextView
            android:id="@+id/humidText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

    </LinearLayout>

</android.support.v7.widget.CardView>


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/583883/e287577340784855c9b0/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

20 0
收藏该文
已收藏

评论内容:(最多支持255个字符)