2017-01-22 9 views
0

私はAndroidスタジオを使って自分の販売を管理するアプリケーションを作っています。私は売り上げのリストを使用しています。売り上げをクリックすると、それが売り上げ(別のアクティビティ)にナビゲートされます。アイテムごとに詳細リストを保存するにはどうしたらいいですか?

私は書き込むテキストを追加するボタンを使用しています。

例:編集テキストにテキスト "1 blue castro Tshirt"と5回追加をクリックすると、この文字列の5行のリストが作成されます。

問題は、各販売の詳細を保存していることです。

どのようにして各販売の詳細を保存することができますか?アプリケーションを再起動して、詳細を含むすべての販売を見つけることができますか?

詳細販売活動のためのJavaコード:

import... 

public class ItemDetailActivity extends ListActivity { 


private ArrayList<String> list = new ArrayList<String>(); 
private ArrayAdapter<String> adapter; 

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_item_detail); 
    final Button btn = (Button) findViewById(R.id.btnAdd); 
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list); 

    final OnClickListener listener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
      EditText edit = (EditText) findViewById(R.id.txtItem); 
      list.add(edit.getText().toString()); 
      edit.setText(""); 
      adapter.add(edit.getText().toString()); 
      adapter.notifyDataSetChanged(); 




} 
}; 



    btn.setOnClickListener(listener); 
    setListAdapter(adapter); 
} 

Javaコードアイテムリストについて(販売リスト)アクティビティ:

package com.galilsoftware.myapplication; 

import... 

public class ItemListActivity extends AppCompatActivity { 

private boolean mTwoPane; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_item_list); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    Button AddCust; 
    setContentView(R.layout.activity_item_list); 
    AddCust = (Button)findViewById(R.id.AddCust); 


    AddCust.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show(); 

     } 
    } 
); 

    View recyclerView = findViewById(R.id.item_list); 
    assert recyclerView != null; 
    setupRecyclerView((RecyclerView) recyclerView); 

    if (findViewById(R.id.item_detail_container) != null) { 

     mTwoPane = true; 
    } 
} 

private void setupRecyclerView(@NonNull RecyclerView recyclerView) { 
    recyclerView.setAdapter(new SimpleItemRecyclerViewAdapter(DummyContent.ITEMS)); 
} 

public class SimpleItemRecyclerViewAdapter 
     extends RecyclerView.Adapter<SimpleItemRecyclerViewAdapter.ViewHolder> { 

    private final List<DummyContent.DummyItem> mValues; 

    public SimpleItemRecyclerViewAdapter(List<DummyContent.DummyItem> items)  { 
     mValues = items; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.item_list_content, parent, false); 
     return new ViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(final ViewHolder holder, int position) { 
     holder.mItem = mValues.get(position); 
     holder.mIdView.setText(mValues.get(position).id); 
     holder.mContentView.setText(mValues.get(position).content); 

     holder.mView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (mTwoPane) { 
        Bundle arguments = new Bundle(); 
        arguments.putString(ItemDetailFragment.ARG_ITEM_ID, holder.mItem.id); 
        ItemDetailFragment fragment = new ItemDetailFragment(); 
        fragment.setArguments(arguments); 
        getSupportFragmentManager().beginTransaction() 
          .replace(R.id.item_detail_container, fragment) 
          .commit(); 
       } else { 
        Context context = v.getContext(); 
        Intent intent = new Intent(context, ItemDetailActivity.class); 
        intent.putExtra(ItemDetailFragment.ARG_ITEM_ID, holder.mItem.id); 

        context.startActivity(intent); 
       } 
      } 
     }); 
    } 

    @Override 
    public int getItemCount() { 
     return mValues.size(); 
    } 

    public class ViewHolder extends RecyclerView.ViewHolder { 
     public final View mView; 
     public final TextView mIdView; 
     public final TextView mContentView; 
     public DummyContent.DummyItem mItem; 

     public ViewHolder(View view) { 
      super(view); 
      mView = view; 
      mIdView = (TextView) view.findViewById(R.id.id); 
      mContentView = (TextView) view.findViewById(R.id.content); 
     } 

     @Override 
     public String toString() { 
      return super.toString() + " '" + mContentView.getText() + "'"; 
     } 
    } 
} 
} 

販売の詳細についてXML:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <EditText 
     android:id="@+id/txtItem" 
     android:layout_width="240dp" 
     android:layout_height="wrap_content" 
     android:inputType="text" 
     android:hint="@string/hintTxtItem" 
     /> 

    <Button 
     android:id="@+id/btnAdd" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/lblBtnAdd" 
     android:layout_toRightOf="@id/txtItem" 
     /> 

    <TextView 
     android:id="@android:id/empty" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/txtItem" 
     android:text="@string/txtEmpty" 
     android:gravity="center_horizontal" 
     /> 

    <android.support.v7.widget.Toolbar 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     android:theme="?attr/actionBarTheme" 
     android:minHeight="?attr/actionBarSize" 
     android:id="@+id/toolbar2" 
     android:layout_below="@+id/txtItem" 
     android:layout_alignParentStart="true" /> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/toolbar2" 
     android:layout_alignParentStart="true" /> 

</RelativeLayout> 

XMLについて販売リスト:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="com.galilsoftware.a415hgufhdcgh.ItemListActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <Button 
      android:text="הוספת לקוח" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/AddCust" 
      android:layout_weight="1" /> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

    <FrameLayout 
     android:id="@+id/frameLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <include layout="@layout/item_list" /> 
    </FrameLayout> 




</android.support.design.widget.CoordinatorLayout> 

ありがとうございました。

+0

使用SQLiteデータベースの助けを借りてそれをリストに変換する まず好みの文字列としてretrive、このArrayListのを取得します。また、アプリケーションがアンインストールされた後に永続化するために、リモートサーバーにデータを保存することもできます –

答えて

1

Sqliteデータベースまたは共有設定を使用して販売の詳細を保存できます。そのため、後で使用するために、共有プリファレンスまたはSqliteデータベースからデータを取得できます。 このヘルプが必要です。

0

あなたが細部の情報を格納するためのモデルクラスを作成し、このようにそれParceable作ることができます。今すぐ

public class Sale implements Parcelable{ 
String name; 
String details; 

protected Sale(Parcel in) { 
    name = in.readString(); 
    details = in.readString(); 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getDetails() { 
    return details; 
} 

public void setDetails(String details) { 
    this.details = details; 
} 

public static final Creator<Sale> CREATOR = new Creator<Sale>() { 
    @Override 
    public Sale createFromParcel(Parcel in) { 
     return new Sale(in); 
    } 

    @Override 
    public Sale[] newArray(int size) { 
     return new Sale[size]; 
    } 
}; 

@Override 
public int describeContents() { 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel parcel, int i) { 
    parcel.writeString(name); 
    parcel.writeString(details); 
} 

}

、あなたはGSONどれを使用して共有設定でこのArrayListのを格納および取得することができます以下のようにのGradleで添加することができる。

compile 'com.google.code.gson:gson:2.2.+' 

嗜好にストアArrayListに:

ArrayList<Sale> list=new ArrayList<>(); 

あなたのセールとその詳細をここに追加してください.. それを好みにストリングとして保存してください。

Gson gson = new Gson(); 
String json = gson.toJson(list); 
Utils.storeUserPreferences(context,"LIST",json); 

は、すべての項目とその内容を保存するためのGson

Gson gson = new Gson(); 
String json = Utils.getUserPreferences(context,"LIST"); 
Type type = new TypeToken<List<Sale>>(){}.getType(); 
final List<Sale> list=gson.fromJson(json, type);