在oncreate android中更新textview
hi frnds我在整个视图中有一个按钮和一个文本视图,当我单击该按钮时,所有联系人都会保存在csv文件中,但当这些联系人将要保存到csv文件时,它会将文本更新为“导出3(此计数变化意味着1 2 3 4 5…直到联系人总数)contcts”表示当我单击按钮时文本视图正在更改,然后如何操作 获取手机中联系人总数的代码如下在oncreate android中更新textview,android,Android,hi frnds我在整个视图中有一个按钮和一个文本视图,当我单击该按钮时,所有联系人都会保存在csv文件中,但当这些联系人将要保存到csv文件时,它会将文本更新为“导出3(此计数变化意味着1 2 3 4 5…直到联系人总数)contcts”表示当我单击按钮时文本视图正在更改,然后如何操作 获取手机中联系人总数的代码如下 update: @Override protected Boolean doInBackground(S
update:
@Override
protected Boolean doInBackground(String... args) {
int count;
CSVWriter writer = null;
try
{
writer = new CSVWriter(new FileWriter(Environment.getExternalStorageDirectory().getAbsolutePath() + "/my_test_contact.csv"));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String displayName;
String number;
String emailid;
long _id;
String columns[] = new String[]{ ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME };
writer.writeColumnNames(); // Write column header
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
columns,
null,
null,
ContactsContract.Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
startManagingCursor(cursor);
if(cursor.moveToFirst()) {
do {
_id = Long.parseLong(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)));
displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)).trim();
number = getPrimaryNumber(_id);
emailid=getEmailid(_id);
writer.writeNext((displayName + "/" + number+ "/" + emailid).split("/"));
}
while(cursor.moveToNext());
csv_status = true;
} else {
csv_status = false;
}
try {
if(writer != null)
writer.close();
} catch (IOException e)
{
Log.w("Test", e.toString());
}
return null;
}
在“活动”中的任意位置插入此代码 doInBackground:
Runnable myRun = new Runnable(){
public void run(){
int count;
CSVWriter writer = null;
try
{
writer = new CSVWriter(new FileWriter(Environment.getExternalStorageDirectory().getAbsolutePath() + "/my_test_contact.csv"));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String displayName;
String number;
String emailid;
long _id;
String columns[] = new String[]{ ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME };
writer.writeColumnNames(); // Write column header
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
columns,
null,
null,
ContactsContract.Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
startManagingCursor(cursor);
int i = 1;
if(cursor.moveToFirst()) {
do {
publishProgress() //<<<< DO THIS
_id = Long.parseLong(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)));
displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)).trim();
number = getPrimaryNumber(_id);
emailid=getEmailid(_id);
writer.writeNext((displayName + "/" + number+ "/" + emailid).split("/"));
}
while(cursor.moveToNext());
csv_status = true;
} else {
csv_status = false;
}
try {
if(writer != null)
writer.close();
} catch (IOException e)
{
Log.w("Test", e.toString());
}
////////////////// end loop
}
}
我可以使用async task并在ProgressUpdate()上提供操作吗?那么,你可以提供一些关于bcoz的代码片段吗?我是android和java新手…谢谢…我保存了答案:$但不是asyncis i==1;在int中i=1;如果(cursor.moveToFirst()){do{rununuithread(new Runnable(){public void run(){TEXTVIEW.setText(“获取联系人”+i++);//更新文本!///here}应该在run()的外侧?没有内部rununuithread!!可以更改UI。。没问题
runOnUiThread(new Runnable() {
public void run(){
TEXTVIEW.setText("GETTING contact"+integer);//update text! /// here
}
});