Java 如何将模型类parcelable对象从片段传递到活动?
我想将Java 如何将模型类parcelable对象从片段传递到活动?,java,android,android-fragments,Java,Android,Android Fragments,我想将Parcelable模型类对象从片段传递到活动。在片段中,我传入AsyncTaskpostExecute()方法。在活动中,我需要在listview中附加模型类对象dat。我试过使用arraylist和Serializableaslo,但它不起作用。请需要一个如何制作的建议 我的片段类: public class PlantPOSearch extends Fragment { Button go; PlantPOModel plantPOModel = new PlantPOModel
Parcelable
模型类对象从片段传递到活动。在片段中,我传入AsyncTaskpostExecute()
方法。在活动中,我需要在listview中附加模型类对象dat。我试过使用arraylist和Serializableaslo,但它不起作用。请需要一个如何制作的建议
我的片段类:
public class PlantPOSearch extends Fragment {
Button go;
PlantPOModel plantPOModel = new PlantPOModel();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.plantpo_search, container, false);
go = (Button) rootView.findViewById(R.id.ordergo);
go.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyAsyncTask myAsyncTask = new MyAsyncTask();
myAsyncTask.execute();
}
});
return rootView;
}
class MyAsyncTask extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
}
protected String doInBackground(String... params) {
InputStream inputStream = null;
HttpURLConnection urlConnection = null;
String line = "", response = "";
try
{
//int plantnum = Integer.parseInt(params[0]);
String url1="http://192.168.1.5:8002/sap/opu/odata/sap/ZMM_PO_APP_SRV/POHeaderSet?$filter=Plant%20eq%20%271000%27";
URL url = new URL(url1);
String authorizationString = "Basic " + Base64.encodeToString(("abaper" + ":" + "erp@786").getBytes(), Base64.NO_WRAP);
URL urlToken = new URL("http://192.168.1.5:8002/sap/opu/odata/sap/ZSALES_APP_SRV/");
String token = new TokenGeneration().getToken(authorizationString, urlToken);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestProperty("Authorization", authorizationString);
urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setRequestProperty("Accept", "application/json");
urlConnection.setRequestProperty("X-CSRF-Token", token);
urlConnection.setRequestMethod("GET");
Log.d("Token", token);
int statusCode = urlConnection.getResponseCode();
Log.d("Response code", "" + statusCode);
if (statusCode == HttpsURLConnection.HTTP_OK) {
inputStream = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
while ((line = bufferedReader.readLine()) != null) {
response += line;
}
if (null != inputStream) {
inputStream.close();
}
Log.d("Plant Response", response);
}
Gson gson = new Gson();
plantPOModel = gson.fromJson(response,PlantPOModel.class);
Log.d("company code",plantPOModel.getD().getResults()[0].getCompanyCode());
Log.d("Doc Number", plantPOModel.getD().getResults()[0].getPurchaseDocNo());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
try {
Intent intent = new Intent(getActivity().getApplicationContext(), POList.class);
ArrayList<PlantPOModel> arrayList = new ArrayList<>();
arrayList.add(plantPOModel);
intent.putParcelableArrayListExtra("Plant",arrayList);
startActivity(intent);
}catch (Exception e){
e.printStackTrace();
}
}
}
}
}
我的活动课:
public class POList extends AppCompatActivity {
ArrayList<String> listItems = new ArrayList<String>();
ArrayAdapter<String> adapter;
private ListView listView;
POListAdapter poListAdapter;
POMaterialModel poMaterialModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.polist);
ArrayList<PlantPOModel> arrayList = getIntent().getParcelableArrayListExtra("Plant");
PlantPOModel plantPOModel = arrayList.get(0);
try{
Log.d("company code",plantPOModel.getD().getResults()[0].getCompanyCode());
} catch (Exception e){
e.printStackTrace();
}
listView = (ListView) findViewById(R.id.listView);
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
//startActivity(new Intent(POList.this,POListView.class));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.logout) {
finish();
startActivity(new Intent(this, Login.class));
return true;
}
return super.onOptionsItemSelected(item);
}
}
公共类POList扩展了AppCompative活动{
ArrayList listItems=新的ArrayList();
阵列适配器;
私有列表视图列表视图;
抛光机抛光机;
POMaterialModel POMaterialModel;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.polist);
ArrayList ArrayList=getIntent();
PlantPOModel PlantPOModel=arrayList.get(0);
试一试{
Log.d(“公司代码”,plantPOModel.getD().getResults()[0].getCompanyCode());
}捕获(例外e){
e、 printStackTrace();
}
listView=(listView)findViewById(R.id.listView);
setTextFilterEnabled(true);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//星触觉(新意图(POList.this,POListView.class));
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.menu,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.logout){
完成();
startActivity(新意图(this,Login.class));
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
你有活动类的“arraylist”数据吗?我认为您获得了数据,但它在应用程序上不可见,因为您没有初始化将数据绑定到列表视图的适配器。请初始化适配器并将模式数据传递给适配器,然后将“setAdapter”传递给“listview”。希望它能帮上忙,山姆,我也试过了,但它不起作用。我使用Log.d();检查数据是否进入活动,但它进入活动。我想你是android的新手。请在google
上搜索listView
演示,它将帮助您阅读。这可能对你有帮助
public class POList extends AppCompatActivity {
ArrayList<String> listItems = new ArrayList<String>();
ArrayAdapter<String> adapter;
private ListView listView;
POListAdapter poListAdapter;
POMaterialModel poMaterialModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.polist);
ArrayList<PlantPOModel> arrayList = getIntent().getParcelableArrayListExtra("Plant");
PlantPOModel plantPOModel = arrayList.get(0);
try{
Log.d("company code",plantPOModel.getD().getResults()[0].getCompanyCode());
} catch (Exception e){
e.printStackTrace();
}
listView = (ListView) findViewById(R.id.listView);
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
//startActivity(new Intent(POList.this,POListView.class));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.logout) {
finish();
startActivity(new Intent(this, Login.class));
return true;
}
return super.onOptionsItemSelected(item);
}
}