思路:首先分析一下,数字我们可以使用随机数Random类,或者Manth.random()*50+50;这种方法实现;说到每秒钟显示一个数字,这可以使用Thread.sleep();线程休眠的方法让每秒钟执行一次,通過使用handler來發送接受來的消息到子綫程顯示
显示的方式我们可以通过一个ListView或者RecyclerView来做为布局的显示,具体实现:
1.xml布局(也可以是RecyclerView)
<ListView android:id="@+id/listvew" android:layout_width="wrap_content" android:layout_height="wrap_content" />
2.无论是ListView还是RecyclerView 我们都需要一个适配器
public class MyAdapter extends BaseAdapter { //传递上下文和数据 private Context context; private ArrayList<String> list; public MyAdapter(Context context) { this.context = context; } @Override public int getCount() { //防止空指针异常 return list == null ? 0 : list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView tv; //判断是否为空,如果为空就创建TextView if (convertView == null) { tv = new TextView(context); AbsListView.LayoutParams params = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT); tv.setTextSize(20); tv.setPadding(5, 5, 5, 5); tv.setLayoutParams(params); } else { tv = (TextView) convertView; } //获取数据 String str = list.get(position); tv.setText(str); return tv; } //添加每一个的item public void addItem(String str) { if (list == null) { list = new ArrayList<>(); } list.add(str); //别忘了刷新 notifyDataSetChanged(); } }
3.MainActivity具體代碼
public class MainActivity extends AppCompatActivity { private ListView listView; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.listvew); adapter = new MyAdapter(this); listView.setAdapter(adapter); addDate(); } private Thread mThread; //随机数对象 private Random random = new Random(); private void addDate() { mThread = new Thread() { @Override public void run() { while (true) { try { Thread.sleep(1000); //生成50到100之間的隨機數 int randomnum = random.nextInt(50) + 50; //显示数字 handler.obtainMessage(1, String.valueOf(randomnum)).sendToTarget(); } catch (InterruptedException e) { e.printStackTrace(); } } } }; mThread.start(); } //創建Handler來發送數據 @SuppressLint("HandlerLeak") private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); String str = (String) msg.obj; adapter.addItem(str); } }; @Override protected void onDestroy() { super.onDestroy(); //儅銷毀Activity的時候結束綫程 mThread.interrupt(); } }好了,這個簡單的小實現就完成了,總之方法有很多,希望大家有什麽看法歡迎留言評論,共同探討!