2017-09-29 2 views
0

aktualisiere Ich habe ein Datum in Listenansicht durch Textfelder hinzugefügt ....Wie kann ich meine Listview-Reihe

Ich mag auf einem Listview durch Antippen Zeilen einer Listenansicht aktualisieren. Alle Zeilendaten stammen aus der sqlite db und ordnen die Daten erneut in meinen Textboxen an.

Die Listview-Aktivität und AddActivity getrennt sind ... enter image description here

Ich brauche deine Hilfe

SQLiteListAdapter.java:

package com.androidstudio.myinventory; 

import android.app.ProgressDialog; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

import java.util.ArrayList; 

/** 
* Created by HP on 9/15/2017. 
*/ 

public class SQLiteListAdapter extends BaseAdapter { 

    Context context; 
    ArrayList<String> Item_ID; 
    ArrayList<String> ItemName; 
    ArrayList<String> Quantity; 


    ArrayList<String> Price; 
    ArrayList<String> Value; 
    // ArrayList<String> Detail ; 


    public SQLiteListAdapter(Context context, ArrayList<String> item_ID, ArrayList<String> itemName, 
          ArrayList<String> quantity, ArrayList<String> price, ArrayList<String> value) { 
     this.context = context; 
     this.Item_ID = item_ID; 
     this.ItemName = itemName; 
     this.Quantity = quantity; 
     this.Price = price; 
     this.Value = value; 
     //this.Detail = detail; 

    } 


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

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

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

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


     Holder holder; 

     LayoutInflater layoutInflater; 

     //Check if this is the first time creating this row for the listview 
     if (child == null) { 

      //get the Android's layout inflater service which will read row_details.xml 
      layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      //Fill the row view with the xml layout file 
      child = layoutInflater.inflate(R.layout.edit_stock_row, null); 

      //Row was null, need to get components from the row_details.xml 
      holder = new Holder(); 
      //Fill the holder with the text view components 
      holder.textviewid = (TextView) child.findViewById(R.id.tvsr); 
      holder.textviewname = (TextView) child.findViewById(R.id.tvname); 
      holder.textviewquantity = (TextView) child.findViewById(R.id.tvquantity); 
      holder.textviewprice = (TextView) child.findViewById(R.id.tvprice); 
      holder.textviewvalue = (TextView) child.findViewById(R.id.tvvalue); 
      //holder.textviewdetail = (TextView) child.findViewById(R.id.tvdetail); 


      //attach the holder to the row 
      child.setTag(holder); 

     } else { 
      //row was created before! thus get the holder object from the row tag 
      holder = (Holder) child.getTag(); 
     } 

     //At this point we have our row, either created from new or got it from the row tag object 
     //we can now fill the data 

     //get our object from the list which is in the position of the listview 
     //position is passed to the getView method by the listview 


     holder.textviewid.setText(Item_ID.get(position)); 
     holder.textviewname.setText(ItemName.get(position)); 
     holder.textviewquantity.setText(Quantity.get(position)); 
     holder.textviewprice.setText(Price.get(position)); 
     holder.textviewvalue.setText(Value.get(position)); 
     // holder.textviewdetail.setText(Detail.get(position)); 


     //return to listview to show 
     return child; 
    } 

    //A holder will be responsible to hold the components to improve listview performance 
//We replicate the components in the row_details.xml 
    public class Holder { 
     TextView textviewid; 
     TextView textviewname; 
     TextView textviewquantity; 
     TextView textviewprice; 
     TextView textviewvalue; 
     // TextView textviewdetail; 

    } 

} 

Edit_Stock.java:

package com.androidstudio.myinventory; 

import android.content.ContentResolver; 
import android.content.Intent; 
import android.database.CharArrayBuffer; 
import android.database.ContentObserver; 
import android.database.Cursor; 
import android.database.DataSetObserver; 
import android.database.sqlite.SQLiteDatabase; 
import android.net.Uri; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.ArrayList; 

public class Edit_Stock extends AppCompatActivity { 

    public static final String KEY1 = "key1"; 
    StockDBHelper stockDBHelper; 
    SQLiteListAdapter ListAdapter; 
    ListView listView; 
    TextView textView; 
    String search; 
    SQLiteDatabase sqLiteDatabase; 
    Cursor cursor; 


    ArrayList<String> ID_ArrayList = new ArrayList<String>(); 
    ArrayList<String> NAME_ArrayList = new ArrayList<String>(); 
    ArrayList<String> QUANTITY_ArrayList = new ArrayList<String>(); 
    ArrayList<String> PRICE_ArrayList = new ArrayList<String>(); 
    ArrayList<String> VALUE_ArrayList = new ArrayList<>(); 
    // ArrayList<String> DETAIL_ArrayList = new ArrayList<String>(); 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_edit__stock); 
     textView = (TextView) findViewById(R.id.tvdetail); 

     stockDBHelper = new StockDBHelper(this); 
     listView = (ListView) findViewById(R.id.listviewedit); 


    } 

    @Override 
    protected void onResume() { 

     ShowSQLiteDBdata(); 

     super.onResume(); 
    } 

    private void ShowSQLiteDBdata() { 

     sqLiteDatabase = stockDBHelper.getWritableDatabase(); 

     cursor = sqLiteDatabase.rawQuery("SELECT * FROM tbl_stock1", null); 

     ID_ArrayList.clear(); 
     NAME_ArrayList.clear(); 
     QUANTITY_ArrayList.clear(); 
     PRICE_ArrayList.clear(); 
     VALUE_ArrayList.clear(); 
     //DETAIL_ArrayList.clear(); 

     if (cursor.moveToFirst()) { 
      do { 
       ID_ArrayList.add(cursor.getString(cursor.getColumnIndex(stockDBHelper.COL_1))); 

       NAME_ArrayList.add(cursor.getString(cursor.getColumnIndex(stockDBHelper.COL_2))); 

       QUANTITY_ArrayList.add(cursor.getString(cursor.getColumnIndex(stockDBHelper.COL_10))); 

       PRICE_ArrayList.add(cursor.getString(cursor.getColumnIndex(stockDBHelper.COL_9))); 
       VALUE_ArrayList.add(cursor.getString(cursor.getColumnIndex(stockDBHelper.COL_5))); 

       // DETAIL_ArrayList.add(cursor.getString(cursor.getColumnIndex(stockDBHelper.COL_7))); 
       /* DETAIL_ArrayList.add(cursor.getColumnName(cursor.getColumnIndex(stockDBHelper.COL_7))); 
       DETAIL_ArrayList.iterator(); 
       tvdetail.setText("Edit");*/ 
      } while (cursor.moveToNext()); 
     } 

     ListAdapter = new SQLiteListAdapter(Edit_Stock.this, ID_ArrayList, 
       NAME_ArrayList, 
       QUANTITY_ArrayList, 
       PRICE_ArrayList, 
       VALUE_ArrayList 
       // DETAIL_ArrayList 

     ); 

     listView.setAdapter(ListAdapter); 

     cursor.close(); 
    } 


    public void tveditClick(View view) { 

     String name = ""; 
     Intent intent = new Intent(Edit_Stock.this, AddStock.class); 


     startActivity(intent); 


     Toast.makeText(this, "cliced", Toast.LENGTH_SHORT).show(); 
    } 

    //Edit works.................... 
    private void EditSQLiteDBdata() { 
     // search=textView.toString(); 

    } 
} 

AddStock.java:

package com.androidstudio.myinventory; 

import android.app.Activity; 
import android.app.DatePickerDialog; 
import android.app.Dialog; 
import android.app.DialogFragment; 
import android.app.FragmentManager; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.Color; 
import android.graphics.drawable.ColorDrawable; 
import android.net.Uri; 
import android.provider.MediaStore; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.DatePicker; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.Spinner; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.text.DateFormat; 
import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class AddStock extends AppCompatActivity implements AdapterView.OnItemSelectedListener { 
    EditText etproductname, etitemname, etbrand, etdate, etcompany, etprice, etquantity, etnotilimit, etlocation, etphoto; 
    EditText etdetail; 
    Spinner spinner_category; 
    Button btnsave; 
    StockDBHelper stockDBHelper; 
    Context context; 

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


     stockDBHelper = new StockDBHelper(this); 

     etproductname = (EditText) findViewById(R.id.etproduct_name); 
     etitemname = (EditText) findViewById(R.id.etItem_name); 
     etbrand = (EditText) findViewById(R.id.etbrand); 
     etdate = (EditText) findViewById(R.id.etDate); 
     spinner_category = (Spinner) findViewById(R.id.Spinner_category); 
     etdetail = (EditText) findViewById(R.id.etdetail); 
     etcompany = (EditText) findViewById(R.id.etcompany); 
     etprice = (EditText) findViewById(R.id.etprice); 
     etquantity = (EditText) findViewById(R.id.etquantity); 
     etnotilimit = (EditText) findViewById(R.id.etnoti_limit); 
     etlocation = (EditText) findViewById(R.id.etlocation); 
     etphoto = (EditText) findViewById(R.id.etupdate_photo); 

     btnsave = (Button) findViewById(R.id.btnsave); 

     pupulateSpinner(); 
     image = (ImageView) findViewById(R.id.imageView); 

    } 


    DatePickerDialog.OnDateSetListener mpickerDialog; 

    // etDate onClick event method 
    public void datePick(View view) { 
     etdate.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Calendar cal = Calendar.getInstance(); 
       int year = cal.get(Calendar.YEAR); 
       int month = cal.get(Calendar.MONTH); 
       int day = cal.get(Calendar.DAY_OF_MONTH); 

       DatePickerDialog dialog = new DatePickerDialog(AddStock.this, android.R.style.Theme_Holo_Light_Dialog_MinWidth 
         , mpickerDialog, year, month, day); 

       dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
       dialog.show(); 
      } 
     }); 
     mpickerDialog = new DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker datePicker, int year, int month, int day) { 
       month = month + 1; 
       Log.d("TAG", "onDateSet :" + month + "/" + day + "/" + year); 
       String date = month + "/" + day + "/" + year; 
       etdate.setText(date); 

      } 
     }; 
    } 


    // spinner populating method called in oncreate() 
    public void pupulateSpinner() { 
     spinner_category.setOnItemSelectedListener(this); 
     // String[] list = getResources().getStringArray(R.array.Categories); 

     /* ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.activity_add_stock,list); 
     spinner_category.setAdapter(arrayAdapter); 
*/ 

     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
       R.array.Categories, android.R.layout.simple_spinner_item); 
// Specify the layout to use when the list of choices appears 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
// Apply the adapter to the spinner 
     spinner_category.setAdapter(adapter); 
    } 


    @Override 
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> adapterView) { 

    } 

    ImageView image; 
    Integer REQUEST_CAMERA = 1, SELECT_FILE = 0; 

    public void photoClick(View view) { 


     final CharSequence[] items = {"Take Photo", "Choose from Gallery", 
       "Cancel"}; 

     AlertDialog.Builder builder = new AlertDialog.Builder(AddStock.this); 
     builder.setTitle("Add Photo!"); 
     builder.setItems(items, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int item) { 
       if (items[item].equals("Take Photo")) { 

        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
        startActivityForResult(intent, REQUEST_CAMERA); 

       } else if (items[item].equals("Choose from Gallery")) { 

        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
        intent.setType("image/*"); 

        startActivityForResult(Intent.createChooser(intent, "Select File"), SELECT_FILE); 
       } else if (items[item].equals("Cancel")) { 

        dialog.dismiss(); 
       } 
      } 


     }); 
     builder.show(); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if (resultCode == Activity.RESULT_OK) { 


      if (requestCode == REQUEST_CAMERA) { 
       // onCaptureImageResult(data); 
       Bundle bundle = data.getExtras(); 
       final Bitmap bmp = (Bitmap) bundle.get("data"); 
       image.setImageBitmap(bmp); 
      } else if (requestCode == SELECT_FILE) { 
       Uri selectphotoUri = data.getData(); 
       image.setImageURI(selectphotoUri); 
      } 


     } 
    } 


    // save button onClick event 
    public void saveStock(View view) { 
     // Button button=new Button(context); 
     //button.setText("View"); 
     //etdetail.setText(text);*/ 

     etdetail.setText("View"); 
     btnsave.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       boolean isInserted = stockDBHelper.insertData(etitemname.getText().toString(), etproductname.getText().toString(), 
         etbrand.getText().toString(), etdate.getText().toString(), spinner_category.getSelectedItem().toString(), 
         etcompany.getText().toString(), etprice.getText().toString(), etquantity.getText().toString(), 
         etnotilimit.getText().toString(), etlocation.getText().toString(), etphoto.getText().toString()); 

       if (isInserted == true) { 
        Toast.makeText(AddStock.this, "Data inserted successfully", Toast.LENGTH_SHORT).show(); 
       } else 
        Toast.makeText(AddStock.this, "Data was not inserted", Toast.LENGTH_SHORT).show(); 
      } 
     }); 


    } 

} 

StockDBHelper.java

package com.androidstudio.myinventory; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

/** 
* Created by HP on 9/10/2017. 
*/ 

public class StockDBHelper extends SQLiteOpenHelper { 
     public static final String DB_NAME = "stock1.db"; 
     public static final String TABLE_NAME = "tbl_stock1"; 
    public static final String COL_1 = "SERIAL"; 
    public static final String COL_2 = "ITEM_NAME"; 
    public static final String COL_3 = "PRODUCT_NAME"; 
    public static final String COL_4 = "BRAND"; 
    public static final String COL_5 = "DATE"; 
    public static final String COL_6 = "CATEGORY"; 
    // public static final String COL_7 = "DETAIL"; 
    public static final String COL_8 = "COMPANY"; 
    public static final String COL_9 = "PRICE"; 
    public static final String COL_10 = "QUANTITY"; 
    public static final String COL_11 = "NOTIFICATION_LIMIT"; 
    public static final String COL_12 = "LOCATION"; 
    public static final String COL_13 = "PHOTO"; 



    public StockDBHelper(Context context) { 
     super(context,DB_NAME, null, 3); 


    } 

    @Override 
    public void onCreate(SQLiteDatabase sqLiteDatabase) { 
     sqLiteDatabase.execSQL("CREATE TABLE " + TABLE_NAME + "(SERIAL INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       "ITEM_NAME TEXT,PRODUCT_NAME TEXT,BRAND TEXT, DATE INTEGER ,CATEGORY TEXT,COMPANY TEXT,PRICE INTEGER," + 
       "QUANTITY INTEGER,NOTIFICATION_LIMIT INTEGER,LOCATION TEXT,PHOTO TEXT)"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 
     sqLiteDatabase.execSQL(" DROP TABLE IF EXISTS " + TABLE_NAME); 
     onCreate(sqLiteDatabase); 
    } 

    public boolean insertData(String item_name,String product_name , String brand , String date , String category, String company, 
            String price,String quantity, String noti_limit , String location,String photo) 
    { 
     SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_2,item_name); 
     contentValues.put(COL_3,product_name); 
     contentValues.put(COL_4,brand); 
     contentValues.put(COL_5,date); 
     contentValues.put(COL_6,category); 
     //contentValues.put(COL_7,detail); 
     contentValues.put(COL_8,company); 
     contentValues.put(COL_9,price); 
     contentValues.put(COL_10,quantity); 
     contentValues.put(COL_11,noti_limit); 
     contentValues.put(COL_12 ,location); 
     contentValues.put(COL_13,photo); 


     long result = sqLiteDatabase.insert(TABLE_NAME,null,contentValues); 

     if (result == -1) 
     return false; 
     else 
     return true; 
    } 
    public Cursor editdata(String id,SQLiteDatabase sqLiteDatabase){ 
     Cursor cursor; 
     String \[\] projection = {COL_1,COL_2,COL_3,COL_4,COL_5,COL_6,COL_8,COL_9,COL_10,COL_11,COL_12,COL_13}; 
     String selection= COL_1+ " LIKE ?"; 
     String\[\] selection_arg={id}; 

     cursor=sqLiteDatabase.query(TABLE_NAME,projection,selection,selection_arg,null,null,null); 
     return cursor; 
    } 

    // Show data in listview editing 
    /*public void ShowListData(String Id, String item_name , String quantity , String price , String value, String detail) 
    { 
     SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_1,Id); 
     contentValues.put(COL_2,item_name); 
     contentValues.put(COL_10,quantity); 
     contentValues.put(COL_9,price); 
     // Value is to be brought by java coding 
     contentValues.put(COL_7,detail); 
    }*/ 
/* 

    public Cursor insertDataIntoList(){ 
     SQLiteDatabase sqLiteDatabase = this.getReadableDatabase(); 
     Cursor res=sqLiteDatabase.rawQuery(" SELECT * FROM " + TABLE_NAME,null); 
     return res; 
    } 
*/ 

}][2] 
+0

Bearbeiten Sie zuerst Ihre Frage. Trennen Sie Ihre Klasse –

+0

Ich benutze Stakcoverflow zum ersten Mal .. so das ist, warum –

Antwort

-1

können Sie adapter.notifyDataSetChanged(); verwenden, um die Listenansicht zu aktualisieren.

+0

Er will Daten mit ID. –

+0

Sie können Funktion in der Adapter-Klasse erstellen, um das Datum zu erhalten, –

+0

Bitte auch etwas auf Ihrem Adapter zurückgeben Überschreiben Sie Funktionen, um die ID und das Element zu erhalten. public Object getItem (int-Position) { Rückgabewert null; // Bitte geben Sie hier Ihr Objekt zurück null } public long getItemId (int-Position) { return 0; // Bitte geben Sie hier Ihre Objekt-ID zurück 0 } –

0

Nehmen Sie einfach die Eltern der Eltern klicken in den Adapter und fangen Sie die ID-Spalte von diesem Klick.

Item_ID.get(position); 

Und dann übergeben Sie dies durch die Absicht zu der Aktivität, wo Sie alle Daten anzeigen möchten. Und dann diese ID und Abfrage an die Datenbank, um alle Daten zu erhalten.

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

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

Danke Bro für so eine schnelle Antwort .... Ich versuche es .... werde Ihnen sagen –

+0

Babul Bro Ich habe versucht, aber nichts funktioniert ... Bitte teilen Sie den Code hier –

Verwandte Themen