将适配器链接到另一个活动的列表视图

时间:2016-01-17 22:10:28

标签: android android-studio

我正在开发应用中的发布系统。 我想要做的是当我按下帖子图标时,我会转到另一个Activity,我有一个EditText和一个Button。 当我按下按钮时,我想从EditText获取文本并将其发布在主页的ListView或“Feed”页面中。 我似乎不知道如何将数组适配器链接到Feed,以便文本显示在ListView上。

这是代码:

主要我需要知道该怎么做:

package com.example.ali.test1;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

import java.util.ArrayList;


public class MainActivity extends ActionBarActivity   {

    EditText input;
    ListView list1;
    ArrayAdapter<String> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    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();
        int id2 = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        } else if (id2 == R.id.action_cart) {
            startActivity(new Intent(MainActivity.this, Post.class));
        }
        return super.onOptionsItemSelected(item);
    }
}

这是帖子活动:

package com.example.ali.test1;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

import java.util.ArrayList;

public class Post extends ActionBarActivity {
    ArrayAdapter<String> adapter1;
    EditText input;
    ListView list;
    ArrayAdapter<String> adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_post);

        // android:id="@+id/input"
        input = (EditText) findViewById(R.id.input);
        // android:id="@+id/list"

        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, new ArrayList<String>());
    }

    // android:onClick="addToList"
    public void addToList(View view) {
        adapter.add(input.getText().toString());
        adapter.notifyDataSetChanged();
        // Clear the input
        input.setText("");
    }

    @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_post, 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);
    }
}

这些是xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.example.ali.test1.MainActivity">

    <ListView
        android:id="@+id/list1"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_weight="1" />
</RelativeLayout>

后:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.example.ali.test1.Post">

    <EditText
        android:id="@+id/input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/list" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Add to list"
        android:onClick="addToList"
        android:layout_below="@id/input"/>
</RelativeLayout>

谢谢!

2 个答案:

答案 0 :(得分:0)

如果从主活动打开帖子活动 - 那么在这里执行此操作的合理方法是使用“startActivityForResult”。您的主要活动应该开始您的帖子活动并收到结果 这一切都在文档中:http://developer.android.com/training/basics/intents/result.html

您可以将文本值从post活动传递回传递给onActivityResult的extras包中的main活动。

答案 1 :(得分:0)

您需要使用方法startActivityForResult(new Intent(MainActivity.this, Post.class),1); 在后期活动中

public void finish (View v){
    String text = input.getText();
    Intent intent = new Intent();
    intent.putExtra("result",text);
    setResult(Activity.RESULT_OK,intent);
    finish();
}

在主活动中,您需要为arrayAdapter定义一个列表并将结果添加到arrayList

@覆盖

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
            list.add(result);
             adapter.notifyDataSetChanged();


        }
      }
}