功能实现:

使用Fragment碎片实现横竖两个碎片,达到一个简易新闻界面的效果

效果图如下:

b942cf09295bafb141382b6c5377ad18.png

第一步:建一个实体类News

代码如下:

public class News {

private String Title;//标题

private String Content;//内容

public News(String Title, String Content){

this.Title = Title;

this.Content = Content;

}

public String getTitle() {

return Title;

}

public String getContent() {

return Content;

}

}

第二步:新建一个活动NewsContent

代码如下:

public class NewsContent extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_news_content);

String newsTitle = getIntent().getStringExtra(“news_title”);

String newsContent = getIntent().getStringExtra(“news_content”);

NewsContentFragment newsContentFragment = (NewsContentFragment)

getSupportFragmentManager().findFragmentById(R.id.news_content_fragment);

newsContentFragment.Refresh(newsTitle,newsContent);

}

public static void ActionStart(Context context, String newsTitle, String newsContent ){

Intent intent = new Intent(context,NewsContent.class);

intent.putExtra(“news_title”,newsTitle);

intent.putExtra(“news_content”,newsContent);

context.startActivity(intent);

}

}

布局文件代码如下:

第三步:建立一个子布局content_show,用做新闻内容布局

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

第四步:建立NewsContentFragment和NewsTitleFragment用做新闻内容布局

NewsContentFragment代码如下:

public class NewsContentFragment extends Fragment {

private View view;

@Nullable

@Override

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

view = inflater.inflate(R.layout.content_show,container,false);

return view;

}

public void Refresh(String newsTitle,String newsContent){

View visibilityLayout = view.findViewById(R.id.liner_layout); visibilityLayout.setVisibility(View.VISIBLE);//显示 TextView newsTitleText = (TextView) view.findViewById(R.id.NewsTitle); TextView newsContentText = (TextView) view.findViewById(R.id.NewsContent); newsTitleText.setText(newsTitle); newsContentText.setText(newsContent);

}1

2

3

4

5

6

7

}

NewsTitleFragment代码如下:

public class NewsTitleFragment extends Fragment {

private boolean flag;

@Nullable

@Override

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.news_title, container, false);

RecyclerView newsTitleRecyclerView = (RecyclerView) view.

findViewById(R.id.news_title_recycler_view);

LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());

newsTitleRecyclerView.setLayoutManager(layoutManager);

NewsAdapter adapter = new NewsAdapter(getNews());

newsTitleRecyclerView.setAdapter(adapter);

return view;

}

@Override

public void onActivityCreated(@Nullable Bundle savedInstanceState) {

super.onActivityCreated(savedInstanceState);

if (getActivity().findViewById(R.id.news_content_fragment) != null)

flag = true;

else

flag = false;

}

private List getNews() {

List newsList = new ArrayList();

for (int i = 0; i <= 50; ++i) {

News news = new News("This is news title " + i, "This is news Content " + i + ". ");

newsList.add(news);

}

return newsList;

}

private String getRandomLengthContent(String s) {

Random random = new Random();

int length = random.nextInt(20) + 1;

StringBuilder builder = new StringBuilder();

for (int i = 0; i < length; ++i) {

builder.append(s);

}

return builder.toString();

}

class NewsAdapter extends RecyclerView.Adapter {

private List mNewsList;

public NewsAdapter(List newsList) {

mNewsList = newsList;

}

@NonNull

@Override

public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

View view = LayoutInflater.from(parent.getContext()).

inflate(R.layout.news_item, parent, false);

final ViewHolder holder = new ViewHolder(view);

view.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

News news = mNewsList.get(holder.getAdapterPosition());

if (flag) {

NewsContentFragment newsContentFragment =

(NewsContentFragment) getFragmentManager().findFragmentById(R.id.news_content_fragment);

newsContentFragment.Refresh(news.getTitle(), news.getContent());

news.getContent();

}

else

{

NewsContent.ActionStart(view.getContext(), news.getTitle(), news.getContent());

}

}

});

return holder;

}

@Override

public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

News news = mNewsList.get(position);

holder.newsTitleText.setText(news.getTitle());

}

@Override

public int getItemCount() {

return mNewsList.size();

}

class ViewHolder extends RecyclerView.ViewHolder {

TextView newsTitleText;

public ViewHolder(@NonNull View itemView) {

super(itemView);

newsTitleText = (TextView) itemView.findViewById(R.id.news_title);

}

}

}

}

最后建立一个适用于RecyclerView的子布局命名为new_item

代码如下:

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

1

2

3

4

5

6

7

8

文章来源: blog.csdn.net,作者:FranzLiszt1847,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/News53231323/article/details/113744345

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐