java - 时间表 Android 应用程序无法运行

标签 java android xml android-layout

我已经制作了一个 Android 应用程序,并且它已成功编译,没有任何错误。但是当我在 Android 手机中运行应用程序时,它不会显示所需的输出。

这是我的 MainActivity.java:

package wahab.com.timetabledemo;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.support.v7.widget.Toolbar;

public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private ListView listView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setupUIViews();
        initToolbar();
    }

    private void setupUIViews(){
        toolbar = (Toolbar)findViewById(R.id.ToolbarMain);
        listView = (ListView)findViewById(R.id.lvMain);

    }

    private void initToolbar(){
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("TimeTable App");
    }


    private void setupListView(){
        String[] title = getResources().getStringArray(R.array.Main);
        String[] description = getResources().getStringArray(R.array.Description);

        SimpleAdaptor simpleAdaptor = new SimpleAdaptor(this, title, description);
        listView.setAdapter(simpleAdaptor);

    }

    public class SimpleAdaptor extends BaseAdapter{

        private Context mContext;
        private LayoutInflater layoutInflater;
        private TextView title, description;
        private String[] titleArray;
        private String[] descriptionArray;
        private ImageView imageView;

        public SimpleAdaptor(Context context, String[] title, String[] description){
            mContext = context;
            titleArray = title;
            descriptionArray = description;
            layoutInflater = LayoutInflater.from(context);
        }

        @Override
        public int getCount() {
            return titleArray.length;
        }

        @Override
        public Object getItem(int i) {
            return titleArray[i];
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            if(view == null){
                view = layoutInflater.inflate(R.layout.main_activity_single_item,null);
            }

            title = (TextView)view.findViewById(R.id.tvMain);
            description = (TextView)view.findViewById(R.id.tvDescription);
            imageView = (ImageView)view.findViewById((R.id.ivMain));

            title.setText(titleArray[i]);
            description.setText(descriptionArray[i]);

            if(titleArray[i].equalsIgnoreCase("Timetable")){
                imageView.setImageResource(R.drawable.timetable);
            }
            else if(titleArray[i].equalsIgnoreCase("Subjects")){
                imageView.setImageResource(R.drawable.book);
            }
            else if(titleArray[i].equalsIgnoreCase("Faculty")){
                imageView.setImageResource(R.drawable.contact);
            }
            else{
                imageView.setImageResource(R.drawable.settings);
            }

            return view;
        }
    }
}

上面给出的是一个无错误的代码。 这是我的activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:context="wahab.com.timetabledemo.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/ToolbarMain"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        android:background="@color/colorPrimary"
        app:titleTextColor="@color/white">

    </android.support.v7.widget.Toolbar>

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/lvMain"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp"
        android:dividerHeight="10dp"
        android:layout_below="@+id/ToolbarMain"
        android:divider="@null">

    </ListView>

</RelativeLayout>

在我的activity_main.xml中,我使用了RelativeLayout,其中定义了一个Toolbar和一个ListView。定义了一个ListView,以便我可以添加不同的操作列表。

这是我的 main_activity_single_item.xml:

<android.support.v7.widget.CardView android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/colorAccent"
android:elevation="4dp"
xmlns:android="http://schemas.android.com/apk/res/android">

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:layout_width="80dp"
        android:layout_height="105dp"
        android:id="@+id/ivMain"
        android:layout_marginLeft="10dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tvMain"
        android:textStyle="bold"
        android:text="Timetable"
        android:layout_marginTop="6dp"
        android:layout_marginLeft="6dp"
        android:layout_toRightOf="@+id/ivMain"
        android:textSize="25sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tvDescription"
        android:text="description"
        android:layout_marginLeft="6dp"
        android:layout_marginTop="3dp"
        android:layout_below="@+id/tvMain"
        android:layout_toRightOf="@+id/ivMain"
        android:textSize="16sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tvClick"
        android:textSize="12sp"
        android:text="click to know more"
        android:layout_marginTop="6dp"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/tvDescription"
        android:layout_alignBottom="@+id/ivMain"/>

</RelativeLayout>

在上面的 xml 文件中,我创建了一个 CardView,它将由一个 ImageView 和 3 个 TextView 组成,使用relativelayout 放置。

因此,我的代码已正确编译,我的应用程序也在运行,但没有获得所需的输出。

This is how it looks like

最佳答案

需要在onCreate中调用setupListView()来显示列表

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setupUIViews();
    initToolbar();
    setupListView(); // to display list
    ^^^^^^^^^^
}

关于java - 时间表 Android 应用程序无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48062051/

相关文章:

java - 更新 Android ListView 中显示的 Firebase 记录

java - 类型错误 : Cannot read property 'initLazy' of undefined?

java - 如何让 JFrame 显示我的 GUI?

java - 运行 JUNIT 测试用例时出错

java - 是否可以从 Android 设备发送 HDMI CEC 命令。

java - 电话号码,如 TextView 中的链接

xml - 将 XSD 模式转换为 GraphQL 模式

android - React Navigation 速度极慢

SQL 服务器 2005 : How to perform a split on a string

java - 导入javax.xml.xpath无法解析