发布于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>
项目locationTextView
,tempTextView
这样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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!