Android 刷新我的文本视图

Android 刷新我的文本视图,android,android-layout,textview,refresh,Android,Android Layout,Textview,Refresh,我自己的对话有问题。 我需要一个对话框,在我的活动中可以多次切换他的文本。由于活动不需要UI,我认为将活动用作对话框是个好主意。我将主题设置为@android:style/Theme.Dialog” 这个很好用。 布局如下所示 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:l

我自己的对话有问题。 我需要一个对话框,在我的活动中可以多次切换他的文本。由于活动不需要UI,我认为将活动用作对话框是个好主意。我将主题设置为@android:style/Theme.Dialog”

这个很好用。 布局如下所示

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Evaluation"
        android:id="@+id/textView_couchdbactivity_dialog_text"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>
但是文本不会改变。只有在我的活动结束时,文本才会改变。 我如何解决这个问题

目前,我的活动看起来完全如此(没有任何对话框):

package de.test.dbperformancemessung;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入com.couchbase.lite.CouchbaseLiteException;
导入java.io.IOException;
导入java.util.ArrayList;
导入de.test.dbperformanceemissung.Persistierung.Daten;
导入de.test.dbperformancemessung.Persistierung.CouchDB.CouchDataManager;
公共类MainActivity扩展活动实现View.OnClickListener
{
专用按钮\u主活动\u开始\u评估;
专用按钮按钮\u主活动\u显示\u图形;
//试验
私人CouchDataManager数据管理器;
私有ArrayList_数据;
私有长[]持续时间=新长[5];
私人长持续时间=0;
私有上下文ctx;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button\u mainactivity\u start\u evaluation=(button)findViewById(R.id.button\u mainactivity\u start\u evaluation);
按钮\u main activity\u start\u evaluation.setOnClickListener(此);
button\u mainactivity\u show\u graph=(button)findViewById(R.id.button\u mainactivity\u show\u graph);
按钮\u main活动\u显示\u图形.setOnClickListener(此);
ctx=this.getApplicationContext();
}   
@凌驾
公共void onClick(视图v)
{
Log.i(“LOGTAG”、“onClick(视图v”);
意图;
开关(v.getId())
{
case R.id.button\u mainactivity\u start\u求值:intent=newintent(getApplicationContext(),CouchDBActivity.class);
Log.i(“LOGTAG”、“Show Graph”);
星触觉(意向);
打破
案例R.id.按钮\u主活动\u显示\u图形:
Log.i(“LOGTAG”、“Show Graph”);
init();
打破
}
}
公共void init()
{
试一试{
dataManager=新的CouchDataManager(“evaluationcouchdb”,ctx);
}捕获(IOE异常)
{
e、 printStackTrace();
}捕获(CouchBaselite异常)
{
e、 printStackTrace();
}
dataManager.reset();
list_data=new ArrayList();
RandomData RandomData=新的RandomData();
对于(int i=0;i<10000;i++)
{
list_data.add(randomData.getRandomData());
}
insertFahrt1();
}
公共void insertFahrt1()
{
Log.i(“LOGTAG”,“插入1.000日期(Fahrt1)”;
ArrayList_smallinsert=新建ArrayList();
对于(int i=0;i<1000;i++)
{
list_smallinsert.add(list_data.get(i));
}
持续时间[0]=dataManager.insertDataInTable(“Fahrt1”,list\u smallinsert,1);
list_smallinsert=null;
Log.i(“LOGTAG”,“Fahrt1:+持续时间[0]);
insertFahrt2();
}
公共void insertFahrt2()
{
日志i(“日志标签”,“插入10.000日期(Fahrt2)”;
持续时间[1]=dataManager.insertDataInTable(“Fahrt2”,列表数据,1);
Log.i(“LOGTAG”,“Fahrt2:+持续时间[1]);
insertFahrt3();
}
public void insertFahrt3()
{
Log.i(“LOGTAG”,“插入1.000.000(Fahrt3)”);
持续时间=0;
对于(int i=0;i<100;i++)
{
duration=duration+dataManager.insertDataInTable(“Fahrt3”,列表数据,1);
}
持续时间[2]=持续时间;
Log.i(“LOGTAG”,“Fahrt3:+持续时间[2]);
insertFahrt4();
}
public void insertFahrt4()
{
日志i(“日志标签”,“插入5.000.000日期(Fahrt4)”;
持续时间=0;
对于(int i=0;i<500;i++)
{
duration=duration+dataManager.insertDataInTable(“Fahrt4”,列表数据,1);
}
持续时间[3]=持续时间;
Log.i(“LOGTAG”,“Fahrt4:+持续时间[3]);
insertFahrt5();
}
public void insertFahrt5()
{
日志i(“日志标签”,“插入10.000.000日期(Fahrt5)”;
持续时间=0;
对于(int i=0;i<1000;i++)
{
duration=duration+dataManager.insertDataInTable(“Fahrt5”,列表数据,1);
}
持续时间[4]=持续时间;
Log.i(“LOGTAG”,“Fahrt5:+持续时间[4]);
Log.i(“LOGTAG”,“所有测试通过”);
dataManager.close();
}
}
我需要的是一个对话框或类似的东西,它显示每个方法的第一个日志。所以用户知道此时正在发生这种情况。
最好不使用线程。我尝试在线程中插入一些内容,但这需要比不使用线程更多的时间。

使用handler通过下面的链接刷新textview值


谢谢

,因为我没有找到其他方法,我尝试将我的工作代码放入IntentService。这很好,在服务处于活动状态期间,用户看到一个ProgressDialog,该对话框从广播接收器抛出的活动中更新。该服务向我的活动发送广播,然后活动更新ProgressDialog。

不需要手动调用
invalidate
。您的代码什么也没说。我假设您阻止
UI线程
,并且您的
TextView
没有更新。我要做的是在db中插入一些数据。在这种情况下,它是一个coach db。可能这会阻止UI线程。我尝试在一个区域中进行插入
textview_couchdbactivity_dialog_text.setText("creating CouchDB");
    textview_couchdbactivity_dialog_text.invalidate();
    try {
        dataManager = new CouchDataManager("evaluationcouchdb", this);
    } catch (IOException e)
    {
        e.printStackTrace();
    } catch (CouchbaseLiteException e)
    {
        e.printStackTrace();
    }
    textview_couchdbactivity_dialog_text.setText("resetting CouchDB");
    textview_couchdbactivity_dialog_text.invalidate();
    dataManager.reset();
package de.test.dbperformancemessung;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.couchbase.lite.CouchbaseLiteException;
import java.io.IOException;
import java.util.ArrayList;
import de.test.dbperformancemessung.Persistierung.Daten;
import de.test.dbperformancemessung.Persistierung.CouchDB.CouchDataManager;

public class MainActivity extends Activity implements    View.OnClickListener
{
    private Button button_mainactivity_start_evaluation;
    private Button button_mainactivity_show_graph;

    //Test
    private CouchDataManager dataManager;
    private ArrayList<Daten> list_data;
    private long[] durations = new long[5];
    private long duration = 0;
    private Context ctx;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button_mainactivity_start_evaluation = (Button) findViewById(R.id.button_mainactivity_start_evaluation);
        button_mainactivity_start_evaluation.setOnClickListener(this);
        button_mainactivity_show_graph  = (Button) findViewById(R.id.button_mainactivity_show_graph);
        button_mainactivity_show_graph.setOnClickListener(this);
        ctx = this.getApplicationContext();
    }   
    @Override
    public void onClick(View v)
    {
        Log.i("LOGTAG", "onClick(View v");
        Intent intent;
        switch (v.getId())
        {
            case R.id.button_mainactivity_start_evaluation:    intent = new Intent(getApplicationContext(), CouchDBActivity.class);
                Log.i("LOGTAG", "Show Graph");
                startActivity(intent);
                break;
            case R.id.button_mainactivity_show_graph:
                Log.i("LOGTAG", "Show Graph");
                init();
                break;
        }
    }
    public void init()
    {
        try {
            dataManager = new CouchDataManager("evaluationcouchdb", ctx);
        } catch (IOException e)
        {
            e.printStackTrace();
        } catch (CouchbaseLiteException e)
        {
            e.printStackTrace();
        }
        dataManager.reset();
        list_data = new ArrayList<Daten>();
        RandomData randomData = new RandomData();
        for(int i = 0; i < 10000; i++)
        {
            list_data.add(randomData.getRandomData());
        }
        insertFahrt1();
    }
    public void insertFahrt1()
    {
        Log.i("LOGTAG", "insert 1.000 Daten (Fahrt1)");
        ArrayList<Daten> list_smallinsert = new ArrayList<Daten>();
        for (int i = 0; i < 1000; i++)
        {
            list_smallinsert.add(list_data.get(i));
        }
        durations[0] = dataManager.insertDataInTable("Fahrt1", list_smallinsert, 1);
        list_smallinsert = null;
        Log.i("LOGTAG", "Fahrt1: " + durations[0]);
        insertFahrt2();
    }
    public void insertFahrt2()
    {
        Log.i("LOGTAG", "insert 10.000 Daten (Fahrt2)");
        durations[1] = dataManager.insertDataInTable("Fahrt2", list_data, 1);
        Log.i("LOGTAG", "Fahrt2: " + durations[1]);
        insertFahrt3();
    }
    public void insertFahrt3()
    {
        Log.i("LOGTAG", "insert 1.000.000 (Fahrt3)");
        duration = 0;
        for (int i = 0; i < 100; i++)
        {
            duration = duration + dataManager.insertDataInTable("Fahrt3", list_data, 1);
        }
        durations[2] = duration;
        Log.i("LOGTAG", "Fahrt3: " + durations[2]);
        insertFahrt4();
    }
    public void insertFahrt4()
    {
        Log.i("LOGTAG", "insert 5.000.000 Daten (Fahrt4)");
        duration = 0;
        for(int i = 0; i < 500; i++)
        {
            duration = duration + dataManager.insertDataInTable("Fahrt4", list_data, 1);
        }
        durations[3] = duration;
        Log.i("LOGTAG", "Fahrt4: " + durations[3]);
        insertFahrt5();
    }
    public void insertFahrt5()
    {
        Log.i("LOGTAG", "insert 10.000.000 Daten (Fahrt5)");
        duration = 0;
        for(int i = 0; i < 1000; i++)
        {
            duration = duration + dataManager.insertDataInTable("Fahrt5", list_data, 1);
        }
        durations[4] = duration;
        Log.i("LOGTAG", "Fahrt5: " + durations[4]);
        Log.i("LOGTAG", "All tests passed");
        dataManager.close();
    }
}