将信息解析为listView

时间:2014-08-07 09:52:39

标签: android parsing android-listview

我要求你帮忙。正如你从图片中看到的那样,这是我应该拥有的结果,但是,此刻我的左角有信息。我在做什么wrog?

enter image description here

MainActivity.java

public class MainActivity extends ListActivity {

    /** Items entered by the user is stored in this ArrayList variable */
    ArrayList<String> list = new ArrayList<String>();


    /** Declaring an ArrayAdapter to set items to ListView */
    ArrayAdapter<String> adapter;

    TextView mTvSDate;
    TextView mTvSName;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        OnClickListener listener = new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.example.SecondElementActivity");
                startActivityForResult(intent, 1);
            }
        };

        ImageButton addBtn = (ImageButton) findViewById(R.id.addBtn);
        addBtn.setOnClickListener(listener);   
        Log.d("Suceess1","Sucess1");

    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // Defining the ArrayAdapter to set items to ListView 
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);

       // Getting reference to TextView tv_sage of the layout file activity_student
      //  mTvSDate = (TextView) findViewById(R.id.editDate);

       // Getting reference to TextView tv_sname of the layout file activity_student
         mTvSName = (TextView)findViewById(R.id.editName);
         Log.d("Suceess5","Sucess5");

        // Fetching data from a parcelable object passed from MainActivity
        NoteElement drug = getIntent().getParcelableExtra("drug");
      //  MyAdapter adapter = new MyAdapter(this, generateData());
        Log.d("Suceess6","Sucess6");


        list.add(mTvSName.getText().toString());
        mTvSName.setText(drug.mSName);
        adapter.notifyDataSetChanged();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

SecondElementActivity.java

    public class SecondElementActivity extends Activity{

    EditText mEtSDate;
    EditText mEtSName;
    Button btnSave;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_second_element);

        // Getting a reference to EditText et_sname of the layout activity_main
        mEtSName = (EditText)findViewById(R.id.editName);

        // Getting a reference to EditText et_sage of the layout activity_main
        mEtSDate = (EditText)findViewById(R.id.editDate);

        // Getting a reference to Button btn_ok of the layout activity_main
        btnSave = (Button)findViewById(R.id.btnSave);

        // Setting onClick event listener for the "OK" button
        btnSave.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                // Creating an instance of NoteElement class with user input data
                NoteElement drug = new NoteElement(
                        mEtSDate.getText().toString(),
                        mEtSName.getText().toString());

                // Creating an intent to open the activity MainActivity
                Intent intent = new Intent(getBaseContext(), MainActivity.class);

                // Passing data as a parecelable object to MainActivity
                intent.putExtra("drug",drug);

                // Opening the activity
                startActivity(intent);
            }
        });
    }
}

Parcelable class NoteElement.java

  public class NoteElement implements Parcelable{

    String mSDate;
    String mSName;

    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    /**
    * Storing the NoteElement data to Parcel object
    **/
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(mSDate);
        dest.writeString(mSName);

    }

    /**
    * A constructor that initializes the NoteElement object
    **/
    public NoteElement(String sDate, String sName){
        this.mSDate = sDate;
        this.mSName = sName;
    }

    /**
    * Retrieving NoteElement data from Parcel object
    * This constructor is invoked by the method createFromParcel(Parcel source) of
    * the object CREATOR
    **/
    private NoteElement(Parcel in){
        this.mSDate = in.readString();
        this.mSName = in.readString();

    }

    public static final Parcelable.Creator<NoteElement> CREATOR = new Parcelable.Creator<NoteElement>() {

        @Override
        public NoteElement createFromParcel(Parcel source) {
            return new NoteElement(source);
        }

        @Override
        public NoteElement[] newArray(int size) {
            return new NoteElement[size];
        }
    };
}

我的activity_main有这样一个.xml文件

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageButton
        android:id="@+id/addBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_action_new"         
        android:contentDescription="@string/desc"/>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/addBtn"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="53dp"
        android:text="@string/mainTxt"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="32sp" />


   <!-- Student version --> 
       <TextView
        android:id="@+id/tv_sname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textIsSelectable="true" />

    <TextView
        android:id="@+id/tv_sdate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textIsSelectable="true" />

    <!-- List -->
    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="20dp"
        android:layout_toLeftOf="@+id/addBtn" />


</RelativeLayout>

activity_second.xml

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >



  <ImageButton
      android:id="@+id/addBtn"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentRight="true"
      android:layout_alignParentTop="true"
      android:src="@drawable/ic_action_new"
      android:contentDescription="@string/desc"/>

  <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignBottom="@+id/addBtn"
      android:layout_alignParentLeft="true"
      android:layout_marginLeft="53dp"
      android:text="@string/mainTxt"
      android:textAppearance="?android:attr/textAppearanceLarge"
      android:textSize="32sp" />

 <!-- Date -->
    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_below="@+id/textView1"
        android:layout_marginRight="36dp"
        android:layout_marginTop="14dp"
        android:layout_toLeftOf="@+id/editDate"
        android:text="@string/date" />
    <EditText
        android:id="@+id/editDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/editName"
        android:layout_alignParentRight="true"
        android:ems="10"
        android:inputType="date"
        android:hint="@string/str_hnt_date" />

  <!-- Name -->
    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_alignBottom="@+id/editName"
        android:layout_alignLeft="@+id/date"
        android:text="@string/name" />
     <EditText
        android:id="@+id/editName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/date"
        android:ems="10"
        android:hint="@string/str_hnt_name" />

 <!-- Dosage -->
     <TextView
        android:id="@+id/dosage"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_alignBaseline="@+id/editText3"
        android:layout_alignBottom="@+id/editText3"
        android:layout_alignLeft="@+id/notes"
        android:text="@string/dosage" />
     <EditText
        android:id="@+id/editText3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editName"
        android:layout_below="@+id/editName"
        android:ems="10"
        android:hint="@string/str_hnt_dosage"  />

  <!-- Notes -->
      <TextView
        android:id="@+id/notes"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_alignBaseline="@+id/editText4"
        android:layout_alignBottom="@+id/editText4"
        android:layout_alignRight="@+id/name"
        android:text="@string/notes" />
    <EditText
        android:id="@+id/editText4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText3"
        android:layout_below="@+id/editText3"
        android:ems="10" 
        android:hint="@string/str_hnt_notes"/>


<!-- buttons: Save and Selete-->
    <Button
        android:id="@+id/btnSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText4"
        android:layout_below="@+id/notes"
        android:layout_marginTop="20dp"
        android:text="@string/btnSave" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/btnSave"
        android:layout_marginLeft="20dp"
        android:layout_toLeftOf="@+id/addBtn"
        android:layout_toRightOf="@+id/btnSave"
        android:text="@string/btnDelete" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

好的,你总共有两项活动吗?

这是交易:看看你的形象。活动1开始活动2对吗?并且您期望从您的活动2获取信息回到活动1,对吗?好的。

首先要学习:

startActivity(intent);

此方法声明您只需启动一项活动,但不会期待任何活动。因此,即使您想通过活动2将信息发送回活动1,它也不起作用。相反,你必须这样做:

startActivityForResult(intent, 1);

第二个参数是一个整数,可以帮助您区分不同的活动调用,这对您来说并不重要。

现在,因为你在上面的方法中说“ForResult”,现在你必须在MainActivity中实现这个:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // here  you will work with the code.
    // data is your intent data sent from activity 2
    // where you say this in your own code:

    // Passing data as a parecelable object to MainActivity
    // intent.putExtra("drug",drug);

}

现在最后要注意的是:

在SecondElementActivity.java中你有这个:

// Opening the activity
   startActivity(intent);

这是错的。你知道为什么?因为你说你想开始一项新活动。但是在Android中你已经拥有了这个活动的父级,即活动1.所以你的活动1叫2,当你结束活动2时它会回到1.所以,替换那一行:

setResult(RESULT_OK, intent);
finish();

编辑:

此外我不知道这是否正确,我不这样做,所以这是我的修复:

OnClickListener listener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent("com.example.SecondElementActivity");
            startActivity(intent);
        }
    };

如果您要创建新意图,则应传递两个参数:

Intent intent = new Intent(this, SecondElementActivity.class);

第二个参数是您要调用的类的名称。

答案 1 :(得分:0)

您可以尝试这样:

<强> activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageButton
        android:id="@+id/addBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher"         
        android:contentDescription="@string/hello_world"/>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/addBtn"
        android:layout_centerHorizontal="true"
        android:text="mainTxt"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="32sp" />

    <!-- List -->
    <ListView
        android:id="@+id/myListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="20dp" />


</RelativeLayout>

关注This tutorial以填充ListView,只需更改该教程中的adapterrow.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/tv_sdate "
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:paddingLeft="5dp"
        android:textSize="12sp" >
    </TextView>

    <TextView
        android:id="@+id/tv_sname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/tv_sdate "
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:textSize="12sp" >
    </TextView>

</RelativeLayout>