TextView不显示最终结果

时间:2016-08-27 15:37:14

标签: java android

我是android新手,我为sql创建了一个应用程序,它是一个简单的应用程序,用户输入一个名称,显示名称显示在显示屏上,但不幸的是文本没有显示 这是代码:

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.ashis.mmm.MainActivity">

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:ems="10"
        android:id="@+id/editText"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="52dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add"
        android:id="@+id/button"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/textView"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="40dp" />
</RelativeLayout>

MainActivity.java

    package com.example.ashis.mmm;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    EditText editText;
    Button button;
    TextView textView;
    Database db;

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

        editText=(EditText) findViewById(R.id.editText);
        button=(Button) findViewById(R.id.button);
        textView=(TextView) findViewById(R.id.textView);
        db = new Database(getApplicationContext(),null,null,1);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String input = editText.getText().toString() ;
                Person person = new Person(input);
                db.add_row(person);
                editText.setText("");
                printDatabse();


            }
        });


    }

    private void printDatabse() {

        String  dbString = db.printData();
        textView.setText(dbString);

    }
}

Person.java

package com.example.ashis.mmm;

/**
 * Created by ashis on 8/27/2016.
 */
public class Person {

    private int _id;
    private String name;

    public Person() {


    }

    public Person(String name) {

        this.name = name;
    }


    public int get_id() {
        return _id;
    }

    public void set_id(int _id) {
        this._id = _id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

DataBase.java

package com.example.ashis.mmm;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by ashis on 8/27/2016.
 */
public class Database extends SQLiteOpenHelper {
    private static final int  DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "persons.db";
    private static final String TABLE_NAME = "Persons";
    private static final String COLLUMN_ID = "_id";
    private static final String COLLUMN_NAME = "Name";




    public Database(Context context, String DATABASE_NAME, SQLiteDatabase.CursorFactory factory, int DATABASE_VERSION) {
        super(context, DATABASE_NAME, factory, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String onCreate = "CREATE TABLE " + TABLE_NAME + "( " +
                            COLLUMN_ID + " INTEGER  ," +
                            COLLUMN_NAME + " TEXT );";
        db.execSQL(onCreate);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    }

    public void add_row(Person person)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put(COLLUMN_NAME,person.getName());
        db.insert(TABLE_NAME,null,values);
        db.close();
    }


    public String printData()
    {
        String dbqry = "";
        SQLiteDatabase db = getReadableDatabase();
        String printqry = "SELECT * FROM " + TABLE_NAME;

        Cursor cursor = db.rawQuery(printqry,null);
        cursor.moveToFirst();
        while (!cursor.isAfterLast())
        {
            if (cursor.getString(cursor.getColumnIndex("Name")) != null)
            {
                dbqry += cursor.getString(1);
                dbqry +="\n";

            }
        }
        db.close();
        cursor.close();

    return dbqry;
    }


}

1 个答案:

答案 0 :(得分:0)

了解文本未出现在TextView中的最佳方法是进行调试,但看起来你并不是那么好。在这种情况下,您可以使用Log.d();方法。我会向你推荐你可能遇到问题的地方,只需在这些地方放一些日志,然后检查你的变量和值是怎么回事。

  1. 检查您的TextView是否在屏幕上可见,并且某些其他视图未覆盖它。你可以这样做,例如通过设置textview的一些背景颜色和一些固定的宽度和高度(50dp),这将显示TextView。
  2. 在printData()方法中放入一些日志来查看来自数据库的内容,只是为了打印你的字符串值;
  3. 检查printData()内部的Cursor,以确保它包含一些记录,可能是您的数据库名称错误或DB表格错误或其他原因。
  4. 如果您的视图在屏幕上可见并且printData()方法正常工作,您将看到该文本没有任何其他问题!