2017-02-17 52 views
0

我是新來的android工作室,我正要完成我的第一個項目。但是,我卡在必須將從列表視圖中選擇的值傳遞給下一個活動的部分。我試圖研究這些代碼,但似乎都無法工作。任何幫助將不勝感激。如何將值從列表視圖傳遞到下一個活動

DisplayProduct.java

public class DisplayProduct extends AppCompatActivity { 

ListView listView; 
SQLiteDatabase sqLiteDatabase; 
DatabaseHelper databaseHelper; 
Cursor cursor; 
ListDataAdapter listDataAdapter; 

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

    listView = (ListView)findViewById(R.id.listView); 
    listDataAdapter = new ListDataAdapter(getApplicationContext(),R.layout.display_product_row); 
    listView.setAdapter(listDataAdapter); 

    databaseHelper = new DatabaseHelper(getApplicationContext()); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     { 
      //Object data = parent.getItemAtPosition(position); 
      //String value = data.toString(); 



     } 
    }); 
    sqLiteDatabase = databaseHelper.getReadableDatabase(); 
    cursor = databaseHelper.getInformations(sqLiteDatabase); 
    if(cursor.moveToFirst()) 
    { 
     do { 

      String contact,location,issue; 
      contact = cursor.getString(0); 
      location = cursor.getString(1); 
      issue = cursor.getString(2); 
      Information information = new Information(contact,location,issue); 
      listDataAdapter.add(information); 


     } while (cursor.moveToNext()); 
    } 
} 

}

ListDataAdapter.java

public class ListDataAdapter extends ArrayAdapter { 
List list = new ArrayList(); 
public ListDataAdapter(Context context, int resource) { 
    super(context, resource); 
} 

static class LayoutHandler 
{ 
    TextView Contact,Location,Issue; 
} 

@Override 
public void add(Object object) { 
    super.add(object); 
    list.add(object); 

} 

@Override 
public int getCount() { 
    return list.size(); 
} 

@Override 
public Object getItem(int position) { 
    return list.get(position); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View row = convertView; 
    LayoutHandler layoutHandler; 
    if (row == null) { 
     LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     row = layoutInflater.inflate(R.layout.display_product_row, parent, false); 
     layoutHandler = new LayoutHandler(); 
     layoutHandler.Contact = (TextView) row.findViewById(R.id.textView8); 
     layoutHandler.Location = (TextView) row.findViewById(R.id.textView18); 
     layoutHandler.Issue = (TextView) row.findViewById(R.id.textView90); 
     row.setTag(layoutHandler); 

    } else { 
     layoutHandler = (LayoutHandler) row.getTag(); 


    } 

    Information information = (Information) this.getItem(position); 
    layoutHandler.Contact.setText(information.getContact()); 
    layoutHandler.Location.setText(information.getLocation()); 
    layoutHandler.Issue.setText(information.getIssue()); 

    return row; 





} 

}

LocationDetail.java

public class LocationDetail extends AppCompatActivity { 


private TextView Textv; 
DatabaseHelper databaseHelper; 
SQLiteDatabase sqlitedatabase; 

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

} 

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

}

+3

的可能的複製[如何從一個活動傳遞一個對象到另一在Android](HTTP ://www.stackoverflow.com/questions/2736389/how-to-pass-an-object-from-one-activity-to-another-on-android) – petey

+0

只是使用意圖,並​​把你想發送的數據使用意圖額外.. – ZeroOne

回答

0

從DisplayProduct.java:

Intent intent = new Intent(this, LocationDetail.class); 
    Object data = parent.getItemAtPosition(position); 
    String message = data.toString(); 
    intent.putExtra(EXTRA_MESSAGE, message); 
    startActivity(intent); 

從LocationDetail.java:

Intent intent = getIntent(); 
    String value = intent.getStringExtra(EXTRA_MESSAGE); 
+0

嘿,那裏,謝謝答覆。我可以問你如何驗證editText。我嘗試鍵入,但無法解析符號。 –

+0

對不起,我犯了一個錯誤。檢查編輯答案 –

+0

好吧,我剛剛嘗試過。沒有任何錯誤,但值仍然沒有出現在LocationDetail.java中。任何想法爲什麼這可能是這種情況? –

相關問題