簡體   English   中英

如何啟動一個包含 GridView 的新活動,其中填充了來自另一個活動的適配器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM