0
我有一個ListView,顯示用戶從活動內動態生成的數組。基本上,該程序是一個計時器,用戶可以選擇一個他們想要報警發生的時間,並提供關於當該報警發生時應該做什麼的描述。如何清除列表視圖
我有ListView設置使用SimpleAdapter調用一個alarm_list_item.xml,其中包含兩個TextView的和我想顯示列表中的每個項目的圖標。
package com.example.sa_one.api;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class MainActivity extends Activity {
public String str;
String data2[] = new String[50];
String data;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://api.androidhive.info/contacts/", null, new api());
CustomList adapter = new CustomList(getApplicationContext(),data2);
ListView list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "You Clicked at " + data2, Toast.LENGTH_SHORT).show();
}
});
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
class api extends AsyncHttpResponseHandler {
@Override
public void onSuccess(int i, org.apache.http.Header[] headers, byte[] bytes) {
try {
str = new String(bytes, "UTF-8");
Log.e("responce ss", "" + str);
try {
JSONObject jsonRootObject = new JSONObject(str);
JSONArray jsonArray = jsonRootObject.optJSONArray("contacts");
int lengthJsonArr = jsonArray.length();
for (i = 0; i < lengthJsonArr; i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String id = jsonObject.optString("id");
String name = jsonObject.optString("name");
String email = jsonObject.optString("email");
String address = jsonObject.optString("address");
String gender = jsonObject.optString("gender");
data = "Node" + i + " : \n id= " + id + " \n Name= " + name + " \n Email= " + email + " \n address= " + address + "\n gender=" + gender + "\n\n";
Log.i("responce s1", "" + data);
data2[i] = data;
Log.i("responce s2", "" + Arrays.toString(data2));
}
} catch (JSONException ignored) {
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) {
}
}
}
這個代碼給錯誤我 當用戶選擇不添加自定義對話框,我想設置在alarm_list_item.xml TextView的的知名度,走了這麼不顯示爲報警列表上的空白。當我嘗試從活動中設置此參數時,我得到一個NullPointerException,因爲我假設xml文件實際上不是一個對象,但或多或少只是用作ListView的引用。有沒有辦法做到這一點?
到目前爲止,我通過將文本設置爲「沒有自定義通知集」來解決問題,但我希望有一個更清潔的選項,並在不使用時將它們全部刪除。
如果您爲正在使用的編程語言/工具添加標籤,您可能會獲得更多幫助。 – DuncanKinnear