[英]how pass data from activity to custom adapter
嗨,伙計們,我需要將 arraylist 從活動傳遞到自定義適配器類,但是我的代碼沒有通過……我不知道為什么!
我使用意圖傳遞數據:
活動:
private void azz() {
int a=0;
String status="";
boolean statuss = false;
String intenttt= path;
System.out.println("INTENT:"+intenttt);
file = new File(intenttt);
System.out.println("FILE:"+file);
FileInputStream is = null;
try {
is = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = null;
try {
dBuilder = dbFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
Document doc = null;
try {
doc = dBuilder.parse(is);
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Element element = doc.getDocumentElement();
element.normalize();
NodeList nList = doc.getElementsByTagName("checkboxes_pizza");
for (int i = 0; i < nList.getLength(); i++) {
Node node = nList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element2 = (Element) node;
//tv1.setText(tv1.getText()+"\nName : " + getValue("name", element2)+"\n");
String id = getValue("id", element2);
a = Integer.parseInt(id);
status = getValue("status", element2);
statuss= Boolean.parseBoolean(status);
System.out.println("XML:" + a);
hm.add(a);
System.out.println("AZZ:" + hm);
}
}
Intent intent = new Intent(ScrollableTabsActivity.this,PlanetAdapter.class) ;
intent.putIntegerArrayListExtra("a", hm);
startActivity(intent);
// ok();
}
獲取意圖的自定義適配器:
Intent intent = getIntent();
Arraylist<Integer> email=intent.getIntegerArrayListExtra("a");
此外,getIntent() 是由 IDE 用紅色編寫的...
那是因為getIntent()
在適配器類中不可用,除非您在其中聲明一個名為getIntent()
的函數。 在適配器中添加一個函數來接收適配器中的數據並調用notifyDataSetChanged()
來刷新列表。 例如:
class DataAdapter extends ArrayAdapter<String> {
private ArrayList<String> items = new ArrayList<>();
public DataAdapter(@NonNull Context context, @LayoutRes int resource) {
super(context, resource);
}
public void setItems(ArrayList<String> items) {
this.items = items;
notifyDataSetChanged();
}
//some more code
}
在您的活動中創建一個適配器實例並將其綁定到列表/微調器,然后調用該函數在適配器中添加數據。
要傳遞一個數組,我建議在您的適配器中創建一個靜態數組變量,如下所示: Arraylist<Integer> variable
然后在開始活動之前在活動中使用adapterFileName.variable = hm
(其中hm
是一個arrayList,因為它看起來像你那樣稱呼它)傳遞值。
// In activity pass Data to Your adapter like DefaulterAdapter
// (mContext,modelDefulterLists,schemeId1)
class DefaulterAdapter extends BaseAdapter
{
//init here your data
String schemeId1;
Context mContext;
ArrayList<ModelDefulterList> modelDefulterLists;
// in adapter i get data from custructer
public DefaulterAdapter(Context mContext, ArrayList<String>
modelDefulterLists, String schemeId1)
{
this.mContext = mContext;
this.modelDefulterLists = modelDefulterLists;
prefsHelper = new PrefsHelper(mContext);
this.schemeId1 = schemeId1;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.