为了账号安全,请及时绑定邮箱和手机立即绑定

我的 ListView 没有显示我的数据,但显示了我的包名

我的 ListView 没有显示我的数据,但显示了我的包名

慕少森 2022-06-30 19:10:48
我正在使用 ListView 来显示从我的数据库中检索到的数据,它假设以前可以工作,但它突然不显示了。通常它应该显示这样的东西(来自其他项目的屏幕截图):发布我的所有代码:public class MainActivity extends AppCompatActivity {private TextView mTextMessage;String[] dataDetail;ArrayList<dataDetail> allDetail = new ArrayList<>();ListView detailList;final Context context = this;final int min = 0;final int max = 10;final int random = new Random().nextInt((max - min) + 1) + min;int score = 0;private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener        = new BottomNavigationView.OnNavigationItemSelectedListener() {    @Override    public boolean onNavigationItemSelected(@NonNull MenuItem item) {        switch (item.getItemId()) {            case R.id.navigation_home:                mTextMessage.setText(R.string.title_home);                return true;            case R.id.navigation_dashboard:                mTextMessage.setText(R.string.title_dashboard);                return true;        }        return false;    }};@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    detailList = findViewById(R.id.dataView);    mTextMessage = (TextView) findViewById(R.id.message);    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);    new GetData().execute();}private class GetData extends AsyncTask<Void, Void, ArrayList<dataDetail>> {    protected ArrayList<dataDetail> doInBackground(Void... voids) {        HttpURLConnection urlConnection;        InputStream in = null;        try {            URL url = new URL("http://10.0.2.2:8080/projectServer/DataDetailDB?getdata=true");            urlConnection = (HttpURLConnection) url.openConnection();            in = new BufferedInputStream(urlConnection.getInputStream());        } catch (IOException e) {            e.printStackTrace();        }       
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

由于您使用的是默认值ArrayAdapter,因此您正在渲染toString()您的dataDetail班级。您至少有以下选择:

  1. 定义自定义toString()dataDetail呈现您需要的信息。就像是:

    @Override public String toString() { return "Name:" + carName; }

    为了显示汽车名称。

  2. 定义并使用自定义适配器,您可以在其中使用自定义视图持有者来呈现所需的数据。如果您使用的RecyclerView.

  3. 你也可以扩展ArrayAdapter。有关更多详细信息,请参阅此答案

我建议将 aRecyclerView与自定义适配器一起使用,而不是 ,与此处ListView介绍的类似。通过这种方式,您可以获得很大的灵活性,并且您的应用程序将能够以有效的方式呈现大量元素。在这里看到两者之间的一个很好的比较。


查看完整回答
反对 回复 2022-06-30
?
精慕HU

TA贡献1845条经验 获得超8个赞

 dataDetail tData = new dataDetail(customerName, carName, appointmentDate, email, issueDescribe, timeForJob, costForJob, reliableOnCar, distanceJob, finalScore);
            allDetail.add(tData.getCustomerName());

arrya 适配器仅使用字符串类型的数组列表,因此它将 tdata 作为字符串放入 allDetails


查看完整回答
反对 回复 2022-06-30
  • 2 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信