Witam mam taki oto kawałek kodu
IteamListViewAdapter.java
package com.example.green.snizo.naukaadaptery3;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
public class IteamListViewAdapter extends ArrayAdapter<Iteams> {
private Context mContext;
private int mResources;
private List<Iteams> row;
DBHelper databaseHelper;
public IteamListViewAdapter(@NonNull Context context, int resource, @NonNull List<Iteams> objects) {
super(context, resource, objects);
this.mContext = context;
this.mResources = resource;
this.row=objects;
}
public void updateResults(List<Iteams> results) {
row = results;
//Triggers the list update
notifyDataSetChanged();
}
static class ListViewHolder {
TextView name;
TextView quantity;
Button button;
ProgressBar progressBar;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
final ListViewHolder viewHolder;
if (convertView==null) {
LayoutInflater layoutInflater= (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=layoutInflater.inflate(mResources,parent,false);
viewHolder=new ListViewHolder();
viewHolder.name =(TextView) convertView.findViewById(R.id.textViewIteamName);
viewHolder.quantity =(TextView) convertView.findViewById(R.id.textViewQuantity);
viewHolder.progressBar = (ProgressBar) convertView.findViewById(R.id.progressBarrQuantity);
viewHolder.button= (Button) convertView.findViewById(R.id.buttonAddQuantity);
convertView.setTag(viewHolder);
}
else {
// Retrieve holder from view
viewHolder = (ListViewHolder) convertView.getTag();
}
viewHolder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
row.get(position).setProgres(getItem(position).getProgres()+1);
Toast.makeText(mContext, getItemId(position)+" An item of the ListView is clicked.", Toast.LENGTH_LONG).show();
databaseHelper=new DBHelper(mContext);
databaseHelper.update(String.valueOf(getItem(position).ids),getItem(position).getProgres());
updateResults(row);
if(getItem(position).getQuantity() < getItem(position).getProgres())
Toast.makeText(mContext,"Ilość nadprogramowa",Toast.LENGTH_SHORT).show();
}
});
// Set text to each TextView of ListView item
ListViewHolder holder = (ListViewHolder) convertView.getTag();
holder.name.setText(getItem(position).getIteamName()+ " ids="+getItem(position).getIds());
holder.quantity.setText(quantity(getItem(position).getQuantity(),getItem(position).getProgres()));
holder.progressBar.setProgress(progres(getItem(position).getQuantity(),getItem(position).getProgres()));
return convertView;
}
private int progres(int full, int quantity) {
return (quantity*100)/full;
}
private String quantity(int full, int quantity) {
return quantity + "/" + full;
}
}
Iteams.java
package com.example.green.snizo.naukaadaptery3;
public class Iteams {
String iteamName;
int progres;
int quantity;
int ids;
public Iteams(String iteamName, int progres, int quantity, int id) {
this.iteamName = iteamName;
this.progres = progres;
this.quantity = quantity;
this.ids = id;
}
public String getIteamName() {
return iteamName;
}
public void setIteamName(String iteamName) {
this.iteamName = iteamName;
}
public int getProgres() {
return progres;
}
public void setProgres(int progres) {
this.progres = progres;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public int getIds() {
return ids;
}
}
IteamlistActivity.java
package com.example.green.snizo.naukaadaptery3;
import android.database.sqlite.SQLiteCursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class IteamlistActivity extends AppCompatActivity {
public ArrayList<Iteams> iteamsArrayList=new ArrayList<>();
DBHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_iteamlist);
databaseHelper=new DBHelper(this);
SQLiteCursor cursor=databaseHelper.getData();
//--------------- testowe dane--------
if(cursor.getCount() == 0) {
for (int i = 0; i < 7; i++) {
if (databaseHelper.addData("cursor one " + i, 10, 20)) {
Toast.makeText(this, "udalosie", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "nie udalosie", Toast.LENGTH_SHORT).show();
}
if (databaseHelper.addData("cursor two " + i, 12, 30)) {
Toast.makeText(this, "udalosie", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "nie udalosie", Toast.LENGTH_SHORT).show();
}
}
}
//--------------- testowe dane--------
dbToArray();
ListView listViewIteam = findViewById(R.id.listViewIteam);
IteamListViewAdapter arrayAdapter=new IteamListViewAdapter(this, R.layout.adapter_list_view_layout, iteamsArrayList);
listViewIteam.setAdapter(arrayAdapter);
}
public void add(View view){
databaseHelper=new DBHelper(this);
databaseHelper.deleteAllData();
iteamsArrayList.clear();
dbToArray();
ListView listViewIteam = findViewById(R.id.listViewIteam);
IteamListViewAdapter arrayAdapter=new IteamListViewAdapter(this, R.layout.adapter_list_view_layout, iteamsArrayList);
listViewIteam.setAdapter(arrayAdapter);
}
private void dbToArray(){
SQLiteCursor cursor=databaseHelper.getData();
while (cursor.moveToNext()) {
iteamsArrayList.add(new Iteams(cursor.getString(1), cursor.getInt(2), cursor.getInt(3),cursor.getInt(0)));
}
}
}
Ogólnie kod działa tak jak chciałem, pobiera dane z bazy, edytuje itd. Pytanie o sam kod co można poprawić... co jest słabo zrobione.. itd...
mSomething
nie jest notacją węgierską - tom
nie oznacza typu, tylko jest symbolicznym sposobem na odróżnienie pola od zmiennych przy implicitthis
.Michał Sikoram
pochodzi z notacji węgierskiej. Ale nazwałem to pseudowęgierską, bo samom
nie znaczy od razu, że ją mamy. Chociaż i tak nie powinniśmy, bo wartości w niej jest około 0.