[英]How to start a new activity that contains GridView filled with an adapter from another activity?
我是 android 開發的新手。 我有一個包含按鈕的主要活動。 如果用戶單擊它,那么它應該啟動或打開另一個活動。 我嘗試在另一個活動中創建一個簡單的 TextView,以確保按鈕工作並且它確實工作並向我展示了我的簡單 TextView。 但是當我創建一個 GridView 時,我使用 ArrayList 和適配器填充了它的數據,每次我點擊按鈕時,應用程序都會崩潰並關閉。
這是我的 Button 里面的內容:
btnSummary.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getBaseContext(), Grid.class);
startActivity(intent);
}
});
這是我的網格 class 里面的內容:
public class Grid extends AppCompatActivity {
GridView gv;
intentAdapter adapter;
EditText plusPost, plusArticle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid);
getIntent();
gv = findViewById(R.id.grid_lv);
plusPost = findViewById(R.id.plus_et_post);
plusArticle = findViewById(R.id.plus_et_article);
ArrayList<Content> info = new ArrayList<>();
Content data = new Content(plusArticle.getText().toString(), plusPost.getText().toString());
info.add(data);
adapter = new intentAdapter(Grid.this, R.layout.summary_custom_layout, info);
gv.setAdapter(adapter);
}
}
最后是我的適配器代碼:
public class intentAdapter extends BaseAdapter {
private Context context;
private int resource;
private ArrayList<Content> contents;
public intentAdapter(Context context, int resource, ArrayList<Content> content) {
this.context = context;
this.resource = resource;
this.contents = content;
}
@Override
public int getCount() {
return contents.size();
}
@Override
public Content getItem(int position) {
return contents.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if(v==null) {
v = LayoutInflater.from(context).inflate(resource, null, false);
}
TextView article = v.findViewById(R.id.article_tv);
TextView post_tv = v.findViewById(R.id.post_tv);
Content data = contents.get(position);
article.setText(data.getArticle());
post_tv.setText(data.getContent());
return v;
}
}
嘗試在 null object 參考上調用虛擬方法 'android.text.Editable android.widget.EditText.getText()'。
問題是因為我從另一個活動中誇大了編輯文本嗎?
嘿,如果您在 xml 布局中使用 recyclerview,請使用 RecyclerView.Adapter 而不是基本適配器,這將很有幫助。 在此處查看更多信息: https://developer.android.com/guide/topics/ui/layout/recyclerview#java
嘗試將帶有點擊列表中意圖的數據發送到網格活動,然后從那里通過覆蓋其構造函數將其發送到適配器(在您的情況下添加更多 arguments)這是一般的想法,並且有更高級的方法來制作活動共享數據,但首先要堅持這一點,以了解您以后需要它們的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.