[关闭]
@ZSCDumin 2019-07-10T11:41:03.000000Z 字数 7110 阅读 651

Android练习题

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context=".MainActivity">
  8. <TextView
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content" />
  11. </RelativeLayout>

第一步:

绑定控件(findViewById)

第二步:

给控件取值或者赋值(setText,getText)

第三步:

按钮点击事件

  1. button.setOnClickListener(new View.OnClickListener() {
  2. @Override
  3. public void onClick(View view) {
  4. //此处写处理代码
  5. }
  6. });

异常

子线程更新UI出错,百度一下看看能不能自己解决

页面跳转

Intent intent =new Intent(当前Activity.this,目标Activity.class);
startActivity(intent);

带数据跳转需要用到:Bundle

ListView 的使用代码:

1、自定义适配器(里面要加载每一个列表子项的布局文件:item.xml)
2、给适配器加载数据
3、给ListView设置适配器

参考代码:

MaActivity.java

  1. package com.zscdumin.test;
  2. import android.os.Bundle;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.widget.ListView;
  5. import butterknife.Bind;
  6. import butterknife.ButterKnife;
  7. public class MainActivity extends AppCompatActivity {
  8. @Bind(R.id.listView)
  9. ListView listView;
  10. private int[] images = new int[1000];
  11. private String[] titles = new String[1000];
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.activity_main);
  16. ButterKnife.bind(this);
  17. for (int i = 0; i < 1000; i++) {
  18. images[i] = R.drawable.icon;
  19. titles[i] = "item" + i;
  20. }
  21. MyAdapter myAdapter = new MyAdapter(this, R.layout.list_item, images, titles);
  22. listView.setAdapter(myAdapter);
  23. }
  24. }

MyAdapter.java

  1. package com.zscdumin.test;
  2. import android.content.Context;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.Adapter;
  7. import android.widget.BaseAdapter;
  8. import android.widget.ImageView;
  9. import android.widget.TextView;
  10. public class MyAdapter extends BaseAdapter {
  11. private int[] images;
  12. private String[] titles;
  13. private Context context;
  14. private int resource;
  15. public MyAdapter(Context context, int resource, int[] images, String[] titles) {
  16. this.images = images;
  17. this.resource = resource;
  18. this.titles = titles;
  19. this.context = context;
  20. }
  21. @Override
  22. public int getCount() {
  23. return images.length;
  24. }
  25. @Override
  26. public Object getItem(int i) {
  27. return images[i];
  28. }
  29. @Override
  30. public long getItemId(int i) {
  31. return i;
  32. }
  33. @Override
  34. public View getView(int i, View view, ViewGroup viewGroup) {
  35. ViewHolder viewHolder;
  36. if (view == null) {
  37. viewHolder = new ViewHolder();
  38. view = LayoutInflater.from(context).inflate(resource, null);
  39. viewHolder.image = view.findViewById(R.id.imageView);
  40. viewHolder.title = view.findViewById(R.id.textView);
  41. view.setTag(viewHolder);
  42. } else {
  43. viewHolder = (ViewHolder) view.getTag();
  44. }
  45. viewHolder.image.setImageResource(images[i]);
  46. viewHolder.title.setText(titles[i]);
  47. return view;
  48. }
  49. final class ViewHolder {
  50. ImageView image;
  51. TextView title;
  52. }
  53. }

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:background="#d8e0e8"
  6. android:orientation="vertical">
  7. <ListView
  8. android:id="@+id/listView"
  9. android:layout_width="match_parent"
  10. android:layout_height="match_parent"
  11. android:layout_weight="1" />
  12. </LinearLayout>

list_item.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:background="#d8e0e8"
  6. android:orientation="horizontal">
  7. <ImageView
  8. android:id="@+id/imageView"
  9. android:layout_width="50dp"
  10. android:layout_height="50dp"
  11. android:src="@mipmap/ic_launcher" />
  12. <TextView
  13. android:id="@+id/textView"
  14. android:layout_width="100dp"
  15. android:layout_height="50dp"
  16. android:layout_marginLeft="50dp"
  17. android:gravity="center"
  18. android:text="你好"
  19. android:textSize="20dp" />
  20. </LinearLayout>

RecycleView 是在ListView基础之上做了优化

你们可以尝试一下往ListView添加10000行数据看看是否卡顿?

使用步骤:

1、自定义适配器(里面要加载每一个列表子项的布局文件:item.xml)
2、给适配器加载数据
3、给ListView设置适配器

参考代码:

MainActivity.java

  1. package com.zscdumin.test;
  2. import android.os.Bundle;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.support.v7.widget.LinearLayoutManager;
  5. import android.support.v7.widget.RecyclerView;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import butterknife.Bind;
  9. import butterknife.ButterKnife;
  10. public class MainActivity extends AppCompatActivity {
  11. @Bind(R.id.recycleView)
  12. RecyclerView recycleView;
  13. MyAdpter adpter;
  14. List<String> list = new ArrayList<>();
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.activity_main);
  19. ButterKnife.bind(this);
  20. for (int i = 0; i < 10000; i++) {
  21. list.add("item" + i);
  22. }
  23. adpter = new MyAdpter(this, list);
  24. LinearLayoutManager layoutmanager = new LinearLayoutManager(this);
  25. layoutmanager.setOrientation(LinearLayoutManager.VERTICAL);
  26. recycleView.setLayoutManager(layoutmanager);
  27. recycleView.setAdapter(adpter);
  28. }
  29. }

MyAdapter.java

  1. package com.zscdumin.test;
  2. import android.content.Context;
  3. import android.support.annotation.NonNull;
  4. import android.support.v7.widget.RecyclerView;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.ImageView;
  9. import android.widget.TextView;
  10. import android.widget.Toast;
  11. import java.util.List;
  12. public class MyAdpter extends RecyclerView.Adapter<MyAdpter.MyViewHolder> {
  13. Context context;
  14. List<String> list;
  15. public MyAdpter(Context context, List<String> list) {
  16. this.context = context;
  17. this.list = list;
  18. }
  19. @NonNull
  20. @Override
  21. public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  22. View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
  23. MyViewHolder viewHolder = new MyViewHolder(view);
  24. return viewHolder;
  25. }
  26. @Override
  27. public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
  28. String s = list.get(position);
  29. holder.textView.setText(s);
  30. holder.imageView.setImageResource(R.mipmap.ic_launcher);
  31. holder.textView.setOnClickListener(new View.OnClickListener() {
  32. @Override
  33. public void onClick(View view) {
  34. Toast.makeText(context, "TextView", 1);
  35. }
  36. });
  37. holder.itemView.setOnClickListener(new View.OnClickListener() {
  38. @Override
  39. public void onClick(View view) {
  40. Toast.makeText(context, "Item", 1);
  41. }
  42. });
  43. }
  44. @Override
  45. public int getItemCount() {
  46. return list.size();
  47. }
  48. static class MyViewHolder extends RecyclerView.ViewHolder {
  49. ImageView imageView;
  50. TextView textView;
  51. public MyViewHolder(View itemView) {
  52. super(itemView);
  53. imageView = itemView.findViewById(R.id.imageView);
  54. textView = itemView.findViewById(R.id.textView);
  55. }
  56. }
  57. }

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent">
  5. <android.support.v7.widget.RecyclerView
  6. android:id="@+id/recycleView"
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent">
  9. </android.support.v7.widget.RecyclerView>
  10. </LinearLayout>

list_item.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:orientation="horizontal">
  6. <ImageView
  7. android:id="@+id/imageView"
  8. android:layout_width="50dp"
  9. android:layout_height="50dp"
  10. android:src="@mipmap/ic_launcher" />
  11. <TextView
  12. android:id="@+id/textView"
  13. android:layout_width="match_parent"
  14. android:layout_height="50dp"
  15. android:gravity="center"
  16. android:text="你好"
  17. android:textSize="20dp" />
  18. </LinearLayout>
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注