Android问题?
我得到json值并设置在recyclerView上,如果我选择项目名称,那么如何才能生成条件,然后只打印关于此数据值的费用,如此数量。
示例:在线订购食品安卓应用
答案 0 :(得分:0)
如果要解析JSON,首先必须学习JSON解析。
您可以按Volley Library,Retrofit等
来解析JSON将JSON转换为POJO / Model类jsonschema2pojo
的网站解析JSON的步骤:
根据您的json创建Pojo类。
使用Volley或Retrofit解析json。
在pojo上设置数据后,将ArrayList发送到Recyclerview Adapter类。
您也可以使用GSON,它易于解析json并将数据设置为pojo类。
GsonBuilder builder = new GsonBuilder();
Gson mGson = builder.create();
List<ItemObject> posts = new ArrayList<ItemObject>();
posts = Arrays.asList(mGson.fromJson(response, ItemObject[].class));
adapter = new RecyclerViewAdapter(MainActivity.this, posts);
recyclerView.setAdapter(adapter);
以下是使用Volley Library的Json Parsing教程并设置为RecyclerView。
参考:https://inducesmile.com/android/android-json-parsing-using-gson-and-recyclerview/
如果我选择项目名称然后只打印关于如何制定条件 这个数据值如Rate,数量就像这样。
答:根据位置,您可以在Recyclerview Adapter类上获取该位置数据的费率,金额值。
如何将所有的recyclerView数据传递给下一个活动并在android中保存sqlite数据库,在onclick Listener中?
如果要将recyclelerView数据发送到下一个Activity,则必须按意图将pojo类对象发送到下一个活动。
RecyclerView数据发送到下一个活动:
takeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Data send to next Activity
Intent intent = new Intent(HomeActivity.this,TakeSingleScanActivity.class);
Bundle args = new Bundle();
args.putSerializable("ARRAYLIST",(Serializable)cList);
intent.putExtra("BUNDLE",args);
startActivity(intent);
}
});
从上次活动收到RecyclerView数据:
ArrayList<LoadDataResult> inList; //Global Variable
Intent intent = getIntent();
Bundle args = intent.getBundleExtra("BUNDLE");
inList = (ArrayList<LoadDataResult>) args.getSerializable("ARRAYLIST");
不要忘记将您的pojo类实现为Serializable:
public class LoadDataResult implements Serializable{
创建一个循环,在活动类的Sqlite上存储所有的recyclerview数据:
for(int m = 0;m<mList.get(0).getResult().size();m++) {
callDataBaseHelper(mList.get(0).getResult().get(m).getName().trim(),
mList.get(0).getResult().get(m).getSku().trim(),
mList.get(0).getResult().get(m).getUpc().trim(),
mList.get(0).getResult().get(m).getPrice().trim(),
mList.get(0).getResult().get(m).getDisplaySize().trim(),
mList.get(0).getResult().get(m).getDisplaySizeYes(),
mList.get(0).getResult().get(m).getStatus().trim());
if(m == mList.get(0).getResult().size()-1) {
setData();
getRefreshTime();
utils.showtoast("Data Load Successful");
utils.hideDialog();
}
}
调用DataBaseHelper类addData方法:
private void callDataBaseHelper(String name, String sku, String upc, String price, String displaySize, int displaySizeYes, String status) {
boolean insertData = databaseHelper.addData(name,sku,upc,price,displaySize,displaySizeYes,status);
// if(insertData){
// Log.e("Inserted","Inserted ");
// }else{
// Log.e("NotInserted","NotInserted ");
// }
}
创建DataBaseHelper类:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "DatabaseHelper";
private static final String DATABASE_NAME = "GiftsDatabase.db";
SQLiteDatabase db;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME,null,Constants.DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try{
String createTable = " CREATE TABLE "+ Constants.TABLE_NAME +"(ID INTEGER PRIMARY KEY AUTOINCREMENT, "+Constants.NAME+" TEXT, "+Constants.SKU+" TEXT ,"+Constants.UPC+" TEXT,"+Constants.PRICE+" TEXT, "+Constants.DISPLAY_SIZE+" TEXT, "+Constants.DISPLAY_SIZE_YES+" INTEGER , "+Constants.STATUS+" TEXT)";
db.execSQL(createTable);
String createTableCount = " CREATE TABLE "+ Constants.TABLE_NAME_COUNT +"(ID INTEGER PRIMARY KEY AUTOINCREMENT, "+Constants.SKU_COUNT+" TEXT ,"+Constants.QUANTITY_COUNT+" TEXT)";
db.execSQL(createTableCount);
Log.e(TAG,"Created Database");
}catch (Exception e){
Log.e("EXCEPTION",""+e);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(" DROP TABLE IF EXISTS "+Constants.TABLE_NAME);
db.execSQL(" DROP TABLE IF EXISTS "+Constants.TABLE_NAME_COUNT);
onCreate(db);
}
public boolean addData(String name , String sku, String upc , String price, String displaySize, int displaySizeYes, String status){
db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(Constants.NAME, name );
contentValues.put(Constants.SKU, sku );
contentValues.put(Constants.UPC, upc );
contentValues.put(Constants.PRICE, price );
contentValues.put(Constants.DISPLAY_SIZE, displaySize );
contentValues.put(Constants.DISPLAY_SIZE_YES, displaySizeYes );
contentValues.put(Constants.STATUS, status );
long result = db.insert(Constants.TABLE_NAME,null,contentValues);
Log.e(TAG,""+upc+" Inserted");
if(result == -1) {
return false;
}else{
// Log.e(TAG,"value inserted");
return true;
}
}
在RecyclerView适配器类
中的ArrayList上存储已检查的RecyclerView数据ArrayList<YourPojoClass> data = new ArrayList<YourPojoClass>();
inside onBindViewHolder();
这用于已检查行中的商店数据。
holder.checkBox..setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
data.add(name.get(position).getText,address.get(position).getText)
}
});
将数据发送到下一个活动:在您的活动的RecyclerView底部创建一个按钮,然后单击该按钮将数据发送到下一个活动。