如何在android中的onItemClickListener方法中获取textview中的值

时间:2013-12-12 14:40:34

标签: eclipse android-intent android-listview textview onitemclicklistener android

我的代码中有一些问题,希望有人可以帮助我, 好的,我们只是关于他的问题:

这是我的主页的代码

 -----------------------------------------------------

package com.buanasoft.toko;


    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.database.Cursor;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;

    public class f_penjualan extends Activity  {
       private long rowID;
       private TextView nm_barangTv;
       private TextView hargaTv;
       private TextView h_jualTv;
       private TextView satuanTv;
       private TextView stokTv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.f_penjualan);

        setUpViews();
          Bundle extras = getIntent().getExtras();
          rowID = extras.getLong(f_data.ROW_ID); 

        Button go = (Button)findViewById(R.id.btn_pilih);
        Intent i = this.getIntent();

        go.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent i = new Intent(getApplicationContext(), daftar_barang.class);
                startActivity(i);
            }
        });

    }

       private void setUpViews() {
           nm_barangTv = (TextView) findViewById(R.id.namaBarangText);
           hargaTv = (TextView) findViewById(R.id.hargaBarangText);
           h_jualTv = (TextView) findViewById(R.id.hargaJualText);
           satuanTv = (TextView) findViewById(R.id.satuanText);
           stokTv = (TextView) findViewById(R.id.stokText);   
       }

       @Override
       protected void onResume()
       {
          super.onResume();
          new LoadBarang().execute(rowID);
       } 

       private class LoadBarang extends AsyncTask<Long, Object, Cursor> 
       {
          DBCon_barang dbCon_barang = new DBCon_barang(f_penjualan.this);

          @Override
          protected Cursor doInBackground(Long... params)
          {
             dbCon_barang.open();
             return dbCon_barang.getOneBarang(params[0]);
          } 

          @Override
          protected void onPostExecute(Cursor result)
          {
             super.onPostExecute(result);   
             result.moveToFirst();
             // get the column index for each data item
             int nm_barangIndex = result.getColumnIndex("nm_barang");
             int hargaIndex = result.getColumnIndex("harga");
             int h_jualIndex = result.getColumnIndex("h_jual");
             int satuanIndex = result.getColumnIndex("satuan");
             int stokIndex = result.getColumnIndex("stok");
             nm_barangTv.setText(result.getString(nm_barangIndex));
             hargaTv.setText(result.getString(hargaIndex));
             h_jualTv.setText(result.getString(h_jualIndex));
             satuanTv.setText(result.getString(satuanIndex));
             stokTv.setText(result.getString(stokIndex));
             result.close();
             dbCon_barang.close();
          }
       } 

       @Override
       public boolean onCreateOptionsMenu(Menu menu) 
       {
          super.onCreateOptionsMenu(menu);
          MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.menu.det_data_menu, menu);
          return true;
       }

       @Override
       public boolean onOptionsItemSelected(MenuItem item) 
       {
          switch (item.getItemId())
          {
             case R.id.editItem:
                Intent addEditBarang =
                   new Intent(this, AddEditBarang.class);

                addEditBarang.putExtra(f_data.ROW_ID, rowID);
                addEditBarang.putExtra("nm_barang", nm_barangTv.getText());
                addEditBarang.putExtra("harga", hargaTv.getText());
                addEditBarang.putExtra("h_jual", h_jualTv.getText());
                addEditBarang.putExtra("satuan", satuanTv.getText());
                addEditBarang.putExtra("stok", stokTv.getText());

                startActivity(addEditBarang); 
                return true;

             case R.id.deleteItem:
                deleteBarang();
                return true;

             default:
                return super.onOptionsItemSelected(item);
          } 
       }

       private void deleteBarang()
       {

          AlertDialog.Builder alert = new AlertDialog.Builder(f_penjualan.this);

          alert.setTitle(R.string.confirmTitle); 
          alert.setMessage(R.string.confirmMessage); 

          alert.setPositiveButton(R.string.delete_btn,
             new DialogInterface.OnClickListener()
             {
                public void onClick(DialogInterface dialog, int button)
                {
                   final DBCon_barang dbCon_barang = 
                      new DBCon_barang (f_penjualan.this);

                   AsyncTask<Long, Object, Object> deleteTask =
                      new AsyncTask<Long, Object, Object>()
                      {
                         @Override
                         protected Object doInBackground(Long... params)
                         {
                            dbCon_barang.deleteBarang(params[0]); 
                            return null;
                         } 

                         @Override
                         protected void onPostExecute(Object result)
                         {
                            finish(); 
                         }
                      };

                   deleteTask.execute(new Long[] { rowID });               
                }
             }
          );

          alert.setNegativeButton(R.string.cancel_btn, null).show();
       }
    }

这是我第二次活动的代码

----------------------------------------------------------

    public class daftar_barang extends ListActivity {
         public static final String ROW_ID = "row_id";
         private ListView conListView;


 private CursorAdapter conAdapter;

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


       ////script untuk memampilkan daftar barang & menu
        conListView=getListView();
        conListView.setOnItemClickListener(viewConListener);

        // mengisi value di TextView
        String[] from = new String[] { "nm_barang" };
        int[] to = new int[] { R.id.daftar_barang };
        conAdapter = new SimpleCursorAdapter(daftar_barang.this, R.layout.daftar_barang, null, from, to);
        setListAdapter(conAdapter); // set adapter


    }


    @Override
    protected void onResume() 
    {
       super.onResume();  
       new GetData().execute((Object[]) null);
     } 


    @Override
    protected void onStop() 
    {
       Cursor cursor = conAdapter.getCursor();

       if (cursor != null) 
          cursor.deactivate();

       conAdapter.changeCursor(null);
       super.onStop();
    }    


    private class GetData extends AsyncTask<Object, Object, Cursor> 
    {
       DBCon_barang dbConnector = new DBCon_barang(daftar_barang.this);

       @Override
       protected Cursor doInBackground(Object... params)
       {
          dbConnector.open();
          return dbConnector.getAllBarang(); 
       } 

       @Override
       protected void onPostExecute(Cursor result)
       {
          conAdapter.changeCursor(result); // set the adapter's Cursor
          dbConnector.close();
       } 
    } 


    //fungsi untuk melihat detail barang
    OnItemClickListener viewConListener = new OnItemClickListener() 
    {
       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
       {         
          Intent viewCon = new Intent(daftar_barang.this,f_penjualan.class);
          viewCon.putExtra(ROW_ID, arg3);
          startActivity(viewCon);
       }
    };    

}

她的问题是=
我想将第二个活动中的数据项显示给第一个活动。 所以当我进入第二个活动并点击第二个活动中的一个数据时,他将在第一个活动中显示。
在一段代码中没有错误警告,但是在我构建之后,当我打开活动时我的应用程序错误。

请让我知道他的问题的位置:(

1 个答案:

答案 0 :(得分:0)

您的问题出在第一项活动的onCreate()中。你有这个代码:

      Bundle extras = getIntent().getExtras();
      rowID = extras.getLong(f_data.ROW_ID);

首次启动您的活动时,它不会包含任何额外内容,因此对getIntent().getExtras()的调用将返回null。然后,下一个语句将抛出NullPointerException。在调用extras == null之前,您需要先检查getLong()