package com.example.trapdoormonitoring; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import java.io.IOException; import java.lang.reflect.Array; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; import java.util.Arrays; public class MainActivity extends AppCompatActivity { private DatagramSocket ds; private String[] computer_lists; private ListView lv; private DatagramPacket dp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); connect(); lv = findViewById(R.id.lv); MyBaseAdapter mAdapter = new MyBaseAdapter(); lv.setAdapter(mAdapter); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(MainActivity.this,MainActivity2.class); intent.putExtra("ip",computer_lists[position]); new Thread(new Runnable() { @Override public void run() { while (true) { intent.putExtra("dp", dp.getData()); intent.putExtra("imageip",dp.getAddress().getHostAddress()); } } }).start(); startActivity(intent); } }); } public void connect(){ new Thread(new Runnable() { @Override public void run() { computer_lists = new String[10]; try { while (true){ ds = new DatagramSocket(8998); byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); ds.receive(dp); String ip = dp.getAddress().getHostAddress(); if (!Arrays.asList(computer_lists).contains(ip)) { for(int i = 0;i<computer_lists.length;i++){ if (computer_lists[i] == null){ computer_lists[i] = ip; break; } } } } } catch (IOException e) { throw new RuntimeException(e); } } }).start(); } class MyBaseAdapter extends BaseAdapter { @Override public int getCount() { return computer_lists.length; } @Override public Object getItem(int position) { return computer_lists[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = View.inflate(MainActivity.this,R.layout.list_item,null); TextView ip = view.findViewById(R.id.textView2); ip.setText(computer_lists[position]); return view; } } }
android studio ListView 闪退!求助!
最新推荐文章于 2024-03-25 17:45:59 发布
该代码示例展示了一个Android应用程序,它创建一个DatagramSocket在8998端口监听UDP数据包。接收到数据包后,程序将IP地址存储到一个列表中,并在ListView上显示。当用户点击列表中的条目时,启动新的活动传递IP地址。
摘要由CSDN通过智能技术生成