2017-05-24 151 views
0

我必須將我的價值從一項活動傳遞給另一項活動。 我用Json從數據庫下載數據,並且它可以工作。在其他活動中傳遞數據

我的第一個活動:

public class ListAdapter extends BaseAdapter 
{ 
Context context; 
List<cources> valueList; 
HashMap<String, String> resultp = new HashMap<String, String>(); 
public ListAdapter(List<cources> listValue, Context context) 
{ 
    this.context = context; 
    this.valueList = listValue; 
} 

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

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

@Override 
public long getItemId(int position) 
{ 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    ViewItem viewItem = null; 
    if(convertView == null) 
    { 
     viewItem = new ViewItem(); 
     LayoutInflater layoutInfiater = (LayoutInflater)this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     //LayoutInflater layoutInfiater = LayoutInflater.from(context); 
     convertView = layoutInfiater.inflate(R.layout.list_adapter_view_test, null); 

     viewItem.txtTitle = (TextView)convertView.findViewById(R.id.nome_prodotto); 
     viewItem.txtDescription = (TextView)convertView.findViewById(R.id.descrizione_prodotto); 
     viewItem.txtPrice = (TextView)convertView.findViewById(R.id.prezzo); 
     convertView.setTag(viewItem); 
    } 
    else 
    { 
     viewItem = (ViewItem) convertView.getTag(); 
    } 
    viewItem.txtPrice.setText(valueList.get(position).prezzo_prodotto); 
    viewItem.txtTitle.setText(valueList.get(position).nome_prodotto); 
    viewItem.txtDescription.setText(valueList.get(position).descrizione_prodotto); 


    convertView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      // Get the position 
      Intent intent = new Intent(context, Dettaglio_Prodotto.class); 
      // Pass all data country 
      intent.putExtra("nome_prodotto", "test"); 

      // Start SingleItemView Class 
      context.startActivity(intent); 

     } 
    }); 


    return convertView; 
} 

} 

class ViewItem 
{ 
TextView txtTitle; 
TextView txtDescription; 
TextView txtPrice; 
} 

我必須要通過的值:

viewItem.txtPrice.setText(valueList.get(position).prezzo_prodotto); 

我的第二個活動我的代碼:

Intent i = getIntent(); 
    nome_prodotto = i.getStringExtra("nome_prodotto"); 

我該怎麼辦呢? 如果我把:

intent.putExtra("nome_prodotto",viewItem.txtTitle.setText(valueList.get(position).nome_prodo‌​tto)); 

我有錯誤: 變量被內部類訪問。需要聲明的最終

+0

問題是什麼? – litelite

+0

如果我把: intent.putExtra(「nome_prodotto」,viewItem.txtTitle.setText(valueList.get(position).nome_prodotto)); 我有錯誤: 在內部類中訪問變量。需要被宣佈爲最終 @litelite –

+0

做錯誤說。將該變量標記爲final。從我所能看到的'viewItem'必須是最終的 – litelite

回答

-1

我猜你試圖做這樣的事情

intent.putExtra("nome_prodotto", valueList.get(position).prezzo_prodotto); 

的方法putExtra需要一個密鑰(字符串)和值(在你的情況你傳遞一個字符串值)。

+1

我有錯誤:在內部類中訪問變量「位置」。需要被宣佈爲最終 –

1

建議:如果您正在使用List數據,則使用ArrayAdapter而不是BaseAdapter

如IDE所示,做出最終變量。

... 

else 
{ 
    viewItem = (ViewItem) convertView.getTag(); 
} 

// This is the item in the current position 
final cources item = (cources) getItem(position); 

然後,當你在爲一個實例創建一個新的onTouchListener的方法使用值列表,你可以使用,而不是重複調用valueList.get(position)

viewItem.txtPrice.setText(item.prezzo_prodotto); 
viewItem.txtTitle.setText(item.nome_prodotto); 
viewItem.txtDescription.setText(item.descrizione_prodotto); 


convertView.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     // Get the position 
     Intent intent = new Intent(context, Dettaglio_Prodotto.class); 
     // Pass all data country 
     intent.putExtra("nome_prodo‌​tto", item.nome_prodo‌​tto); 

     // Start SingleItemView Class 
     context.startActivity(intent); 

    } 
}); 
+0

我必須把最終的資源item = getItem(position);? –

+0

就像我在回答中所做的一樣。直接在'viewItem.txtPrice.setText'之上 –

0

,這是一個內部類。

該類訪問的任何變量必須是最終的或者在類中聲明的。如果你在內部類中創建了一個新的int,那麼這個結果是平均的,那麼它不得不是最終的。但是如果int在外部聲明,它必須是final。

在你的情況下,變量position必須標記爲最終

相關問題