猿问

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

我正在使用 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;

    }

};


@Override

protected 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();

        }

       

慕少森
浏览 100回答 2
2回答

收到一只叮咚

由于您使用的是默认值ArrayAdapter,因此您正在渲染toString()您的dataDetail班级。您至少有以下选择:定义自定义toString()以dataDetail呈现您需要的信息。就像是:@Override public String toString() { return "Name:" + carName;&nbsp;}为了显示汽车名称。定义并使用自定义适配器,您可以在其中使用自定义视图持有者来呈现所需的数据。如果您使用的是RecyclerView.你也可以扩展ArrayAdapter。有关更多详细信息,请参阅此答案。我建议将 aRecyclerView与自定义适配器一起使用,而不是 ,与此处ListView介绍的类似。通过这种方式,您可以获得很大的灵活性,并且您的应用程序将能够以有效的方式呈现大量元素。在这里看到两者之间的一个很好的比较。

精慕HU

&nbsp;dataDetail&nbsp;tData&nbsp;=&nbsp;new&nbsp;dataDetail(customerName,&nbsp;carName,&nbsp;appointmentDate,&nbsp;email,&nbsp;issueDescribe,&nbsp;timeForJob,&nbsp;costForJob,&nbsp;reliableOnCar,&nbsp;distanceJob,&nbsp;finalScore); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allDetail.add(tData.getCustomerName());arrya 适配器仅使用字符串类型的数组列表,因此它将 tdata 作为字符串放入 allDetails
随时随地看视频慕课网APP

相关分类

Java
我要回答