- 新增两个Activity,界面如下:
- 新闻列表(NewsActivity):
要求:总体使用线性布局(垂直),每个列表项单独使用一个布局(线性布局和相对布局均可),这里在XML中设计两个静态的两个列表项
代码:
定义一个Members类:
package com.example.myapplication;
public class Members {
public int imageId;
public String title;
public String source;
public String getTitle() {
return title;
}
public String getSource() {
return source;
}
public Members(int imageId, String title, String source)
{
this.imageId = imageId;
this.title = title;
this.source = source;
}
}
定义一个MembersAdapter类:
package com.example.myapplication;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
public class MembersAdapter extends ArrayAdapter<Members> {
public MembersAdapter(Context context, ArrayList<Members> members)
{
super(context,0, members);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
// Get the data item for this position
Members members = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
if(convertView == null)
{
convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);
}
// Lookup view for data population
TextView tvtitle = (TextView) convertView.findViewById(R.id.tvtitle);
TextView tvsource = (TextView) convertView.findViewById(R.id.tvsource);
ImageView image = (ImageView) convertView.findViewById(R.id.image);
// Populate the data into the template view suing the data object
tvtitle.setText(members.title);
tvsource.setText(members.source);
image.setImageResource(members.imageId);
// return the complete view to render on screen
return convertView;
}
}
定义NewsActivity类:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import java.util.ArrayList;
import android.app.Activity;
import android.view.View;
import android.widget.ImageView;
import android.content.Intent;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.AdapterView;
public class NewsActivity extends AppCompatActivity {
// Construct the data source
private ArrayList<Members> arrayOfMembers = new ArrayList<Members>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news);
// Create the adapter to convert the array to views
MembersAdapter adapter = new MembersAdapter(this, arrayOfMembers);
// Attach the adapter to a ListView
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);
// add members
addMembers();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Intent intent = new Intent(NewsActivity.this, DetailActivity.class);
intent.putExtra("title", arrayOfMembers.get(position).getTitle());
intent.putExtra("source", arrayOfMembers.get(position).getSource());
startActivity(intent);
}
});
}
public void addMembers()
{
Members member1 = new Members(R.drawable.img, "友谊之树", "来源:新华网 2023/5/21");
arrayOfMembers.add(member1);
Members member2 = new Members(R.drawable.img_1, "中国大学生音乐节", "来源:新华网 2023/5/21");
arrayOfMembers.add(member2);
}
}
Activity_news.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity">
<ListView
android:id="@+id/list_view"
android:layout_width="900dp"
android:layout_height="877dp"></ListView>
</LinearLayout>
List_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/image"
android:layout_width="73dp"
android:layout_height="68dp"
android:layout_margin="20dp"></ImageView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="vertical">
<TextView
android:id="@+id/tvtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="title"
android:textSize="20dp"
android:layout_marginTop="15dp"
android:layout_marginLeft="10dp" />
<TextView
android:id="@+id/tvsource"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="source time "
android:textSize="17dp"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"/>
</LinearLayout>
</LinearLayout>
(2)新闻详情(DetailActivity):
代码:
DetailActivity类:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class DetailActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
String title = getIntent().getStringExtra("title");
String source = getIntent().getStringExtra("source");
}
}
Activity_detail.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DetailActivity">
<TextView
android:id="@+id/textView1"
android:layout_width="259dp"
android:layout_height="45dp"
android:text="新闻标题新闻标题"
android:textSize="25dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.657"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.031" />
<View
android:id="@+id/editTextText3"
android:layout_width="400dp"
android:layout_height="1dp"
android:background="@color/black"
android:ems="10"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.454"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.165"
tools:ignore="SpeakableTextPresentCheck" />
<TextView
android:id="@+id/textView8"
android:layout_width="114dp"
android:layout_height="25dp"
android:text="来源:新华网"
android:textSize="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.049"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.125"
tools:ignore="TextSizeCheck" />
<TextView
android:id="@+id/textView9"
android:layout_width="124dp"
android:layout_height="21dp"
android:text="时间:2023/5/21"
android:textSize="15dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.944"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.128"
tools:ignore="TextSizeCheck" />
<TextView
android:id="@+id/textView10"
android:layout_width="202dp"
android:layout_height="30dp"
android:text="新闻内容新闻内容......"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.234"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.202" />
</androidx.constraintlayout.widget.ConstraintLayout>