Ich möchte einige Neuigkeiten mit CardView anzeigen (die zusammengelegt und erweitert werden kann). Standardmäßig wird CardView nicht erweitert, sodass nur der Nachrichtentitel angezeigt wird. Wenn sie jedoch erweitert wird, ist ein WebView sichtbar, der die Nachrichtenseite anzeigt.Aktivieren der Minimierung und Erweitern von CardView
meinen Code Diese sind so weit: `
News.java
public class News {
private String title;
private String url;
public News(){
this("", "");
}
public News(String title, String url){
this.title = title;
this.url = url;
}
public void setTitle(String title){
this.title = title;
}
public void setUrl(String url){
this.url = url;
}
public String getTitle(){
return title;
}
public String getUrl(){
return url;
}
}
` NewsViewHolder.java
public class NewsViewHolder extends RecyclerView.ViewHolder {
public TextView newsTitle;
public WebView newsContent;
public NewsViewHolder(View itemView){
super(itemView);
newsTitle = (TextView) itemView.findViewById(R.id.news_title);
newsContent = (WebView) itemView.findViewById(R.id.news_web_content);
}
}
NewsListAdapter.java
public class NewsListAdapter extends RecyclerView.Adapter<NewsViewHolder> {
private final List<News> newsList;
public NewsListAdapter(List<News> newsList) {
this.newsList = newsList;
}
@Override
public NewsViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
final LayoutInflater layoutInflater = LayoutInflater.from(viewGroup.getContext());
final View v = layoutInflater.inflate(R.layout.news_card, viewGroup, false);
return new NewsViewHolder(v);
}
@Override
public void onBindViewHolder(NewsViewHolder holder, int i) {
holder.newsTitle.setText(newsList.get(i).getTitle());
holder.newsContent.loadUrl(newsList.get(i).getUrl());
}
@Override
public int getItemCount() {
return newsList.size();
}
}
NewsFragment.java
public class NewsFragment extends Fragment {
private RecyclerView recView;
public static NewsFragment newInstance(String param1, String param2){
NewsFragment fragment = new NewsFragment();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_news, container, false);
recView = (RecyclerView) view.findViewById(R.id.news_list);
recView.setLayoutManager(new LinearLayoutManager(getActivity()));
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("News");
List<News> dummyNews = new ArrayList<News>();
for (int x = 1; x <= 5; x++){
News news = new News("News #"+x, "file:///android_asset/www/dummy.html");
dummyNews.add(news);
}
recView.setAdapter(new NewsListAdapter(dummyNews));
return view;
}
}
`
news_card.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/card_padding"
tools:background="#22000000">
<TextView
android:id="@+id/news_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/default_margin_padding"
android:textSize="@dimen/quiz_question_text_size" />
<WebView
android:id="@+id/news_web_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<!-- dummy sharing buttons -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textSize="16sp"
android:text="WhatsApp"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textSize="16sp"
android:text="E-mail"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:textSize="16sp"
android:text="Facebook"
tools:ignore="HardcodedText" />
</LinearLayout>
</LinearLayout>
Alle Nachrichten werden korrekt angezeigt. Jetzt sind die Probleme:
- Wie Sie eine Schaltfläche auf der rechten Seite der CardView hinzufügen, um zu ermöglichen kollabieren/erweitern?
- Wenn ausgeblendet, ist nur der Nachrichtentitel sichtbar.
Wie geht das? Oder gibt es eine CardView-Bibliothek von Drittanbietern, die meinen Anforderungen entspricht? Vielen Dank.