ArrayAdapter
getView
not getting called, whereas getCount
returns listsize. I have applied setAdapter(null)
before setting adapter with original list items on list to set adapter but it is not working.
And also tried BaseAdapter
for the same, but still no luck
The code I tried is -
public PrintLabelAdapter(Context context, int layoutResourceId, ArrayList<String> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
//Log.d("sublistcount", "sublistcount" +data.size());
}
@Override
public int getCount() {
Log.d("getcount", "getcount" + data.size());
return data.size();
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
WeatherHolder holder = null;
// db=new DatabaseHandler( context);
Log.d("getcount", "getcount in getview" + data.size());
final String weather;
if (row == null) {
Log.d("getcount", "getcount in getviewin row i");
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new WeatherHolder();
// holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txt = (TextView) row.findViewById(R.id.txt);
holder.chk = (CheckBox) row.findViewById(R.id.chk);
row.setTag(holder);
} else {
Log.d("getcount", "getcount in getviewin row i111");
holder = (WeatherHolder) row.getTag();
}
weather = data.get(position);
holder.txt.setText(weather);
// holder.imgIcon.setImageResource(weather.icon);
final WeatherHolder finalHolder = holder;
holder.chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
finalHolder.chk.setButtonDrawable(R.mipmap.checked);
//db.updateMovingDay(weather.getTitle(),1);
}
else
{
// db.updateMovingDay(weather.getTitle(),0);
finalHolder.chk.setButtonDrawable(R.mipmap.uncheck);
}
}
});
return row;
}
static class WeatherHolder {
ImageView imgIcon;
TextView txt;
CheckBox chk;
}
}
This is my setAdapter code -
PrintLabelAdapter labeladapternew = new PrintLabelAdapter(mContext,R.layout.labeitem, fine.get(i));
list4.setAdapter(labeladapternew);
labeladapternew.notifyDataSetChanged();
list4.invalidateViews();
Please, let me know, if I am doing anything wrong.
EDIT
public class PrintLabelScreen extends Activity {
// http://developers.itextpdf.com/itext-java
Context mContext;
ImageView head, img_back, icon;
TextView centertxt;
ImageView search, print, inbox, home, fav;
ListView list1, list2, list3, list4;
String label;
TextView text1, texts1, text2, texts2, text3, texts3, text4, texts4;
String priorty;
int i1;
ArrayList aList;
Button fragilebtn, fragilebtn1, fragilebtn2, fragilebtn3;
List<String> sublist = null;
List<String> sublist1 = null;
String fragile;
Button next, prev;
int count = 0;
PrintLabelAdapter labeladapter;
int prevcount = 0;
Map<Integer, ArrayList<String>> m1 = new HashMap<Integer, ArrayList<String>>();
// Map<Integer,List<Integer>> m2 = new HashMap<Integer,List<Integer>>();
//
List<ArrayList<User>> usize=null;
List<ArrayList<String>> favlist=null;
AbstractViewRenderer page = null;
AbstractViewRenderer page1 = null;
AbstractViewRenderer page2 = null;
AbstractViewRenderer page3 = null;
LinearLayout linear1, linear2;
ProgressBar progressBar1;
DatabaseHandler db;
ArrayList finalList = new ArrayList<String>();
List<List<ArrayList<String>>> finallist;
int count1=0;
RelativeLayout lastrel;
//PdfDocument doc
PdfDocument doc=null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.printlabel);
mContext = PrintLabelScreen.this;
db=new DatabaseHandler(mContext);
centertxt = (TextView) findViewById(R.id.centertxt);
centertxt.setText("Print Labels");
icon.setVisibility(View.GONE);
img_back.setVisibility(View.GONE);
head.setVisibility(View.GONE);
search.setVisibility(View.GONE);
fav.setVisibility(View.GONE);
home.setVisibility(View.VISIBLE);
print.setVisibility(View.VISIBLE);
inbox.setVisibility(View.VISIBLE);
text4 = (TextView) findViewById(R.id.text4);
texts4 = (TextView) findViewById(R.id.texts4);
Log.d("text", "text" + fragile);
texts1.setText("UNPACKING PRIORITY:" + priorty);
texts2.setText("UNPACKING PRIORITY:" + priorty);
texts3.setText("UNPACKING PRIORITY:" + priorty);
texts4.setText("UNPACKING PRIORITY:" + priorty);
text1.setText(label);
text2.setText(label);
text3.setText(label);
text4.setText(label);
aList = new ArrayList(Arrays.asList(text.split(",")));
if(aList.size()>40)
{
lastrel.setVisibility(View.VISIBLE);
}
Log.d("FFFFFFF", "FFFFFF" + aList.size());
if (!aList.get(0).equals("")) {
i1 = (int) Math.ceil(aList.size() / 10.0);
}
sublist = new ArrayList<String>();
int x = 0;
for (int p = 0; p < i1; p++) {
//Log.d("listiss", "listiss" +p);
if (aList.size() >= (x + 10)) {
sublist = new ArrayList<String>(aList.subList(x, x + 10));
x += 10;
} else {
sublist = new ArrayList<String>(aList.subList(x, aList.size()));
}
finalList.add(sublist );
Log.d("finallist", "finallist" + finalList.size());
prevcount=sublist.size();
//db.addLabelItem(p, (ArrayList<String>) sublist);
// addLabelItem(String id, ArrayList < String > labellist)
m1.put(p,(ArrayList<String>) sublist);
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn.setVisibility(View.VISIBLE);
fragile = "Y";
} else {
fragilebtn.setVisibility(View.GONE);
fragile = "N";
}
if (aList.size() != 0) {
if (p == 0) {
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn.setVisibility(View.VISIBLE);
fragile = "Y";
} else {
fragilebtn.setVisibility(View.GONE);
fragile = "N";
}
labeladapter = new PrintLabelAdapter(this,R.layout.labeitem,
(ArrayList) m1.get(p));
list1.setAdapter(labeladapter);
} else if (p == 1) {
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn1.setVisibility(View.VISIBLE);
fragile = "Y";
} else {
fragilebtn1.setVisibility(View.GONE);
fragile = "N";
}
labeladapter = new PrintLabelAdapter(this,R.layout.labeitem,
(ArrayList) m1.get(p));
list2.setAdapter(labeladapter);
} else if (p == 2) {
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn2.setVisibility(View.VISIBLE);
fragile = "Y";
} else {
fragilebtn2.setVisibility(View.GONE);
fragile = "N";
}
labeladapter = new PrintLabelAdapter(this,R.layout.labeitem,
(ArrayList) m1.get(p));
list3.setAdapter(labeladapter);
} else if (p == 3) {
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn3.setVisibility(View.VISIBLE);
fragile = "Y";
} else {
fragilebtn3.setVisibility(View.GONE);
fragile = "N";
}
labeladapter = new PrintLabelAdapter(this,R.layout.labeitem,
(ArrayList) m1.get(p));
list4.setAdapter(labeladapter);
}
}
}
finallist=chopped(finalList,4);
Log.d("FFFFFFF", "FFFFFF" + finallist.size());
// Log.d("Array", "Array 1" +finallist.size());
inbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int x = 0;
try {
for (int i = 0; i < finallist.size(); i++) {
final int finalI = i;
page = new AbstractViewRenderer(mContext, R.layout.printlabel1) {
private String _text;
public void setText(String text) {
}
@Override
protected void initView(View view) {
// TextView tv_hello = (TextView)view.findViewById(R.id.tv_hello);
//PrintLabelAdapter labeladapter = null; //tv_hello.setText(_text);
favlist = finallist.get(finalI);
for (int j = 0; j < favlist.size(); j++) {
if (j == 0) {
labeladapter = new PrintLabelAdapter(mContext,R.layout.labitem,
favlist.get(0));
list1 = (ListView) view.findViewById(R.id.list1);
list1.setAdapter(labeladapter);
labeladapter.notifyDataSetChanged();
text1 = (TextView) view.findViewById(R.id.text1);
texts1 = (TextView) view.findViewById(R.id.texts1);
fragilebtn = (Button) view.findViewById(R.id.fragilebtn);
texts1.setText("UNPACKING PRIORITY:" + priorty);
text1.setText(label);
try {
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn.setVisibility(View.VISIBLE);
}
} catch (Exception e) {
e.printStackTrace();
}
}
if (j == 1) {
labeladapter = new PrintLabelAdapter(mContext,R.layout.labitem,
favlist.get(1));
//Log.d("listiss","listiss"+slist2.size());
list2 = (ListView) view.findViewById(R.id.list2);
list2.setAdapter(labeladapter);
labeladapter.notifyDataSetChanged();
text2 = (TextView) view.findViewById(R.id.text2);
texts2 = (TextView) view.findViewById(R.id.texts2);
fragilebtn1 = (Button) view.findViewById(R.id.fragilebtn1);
texts2.setText("UNPACKING PRIORITY:" + priorty);
text2.setText(label);
try
{
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn1.setVisibility(View.VISIBLE);
}
} catch (Exception e)
{
e.printStackTrace();
;
}
}
if (j == 2)
{
labeladapter = new PrintLabelAdapter(mContext,R.layout.labitem,
favlist.get(2));
list3 = (ListView) view.findViewById(R.id.list3);
list3.setAdapter(labeladapter);
labeladapter.notifyDataSetChanged();
text3 = (TextView) view.findViewById(R.id.text3);
texts3 = (TextView) view.findViewById(R.id.texts3);
fragilebtn2 = (Button) view.findViewById(R.id.fragilebtn2);
texts3.setText("UNPACKING PRIORITY:" + priorty);
text3.setText(label);
try {
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn2.setVisibility(View.VISIBLE);
}
} catch (Exception e) {
e.printStackTrace();
}
}
if (j == 3) {
labeladapter = new PrintLabelAdapter(mContext,R.layout.labitem,
favlist.get(3));
list4 = (ListView) view.findViewById(R.id.list4);
list4.setAdapter(labeladapter);
labeladapter.notifyDataSetChanged();
text4 = (TextView) view.findViewById(R.id.text4);
texts4 = (TextView) view.findViewById(R.id.texts4);
fragilebtn3 = (Button) view.findViewById(R.id.fragilebtn3);
texts4.setText("UNPACKING PRIORITY:" + priorty);
text4.setText(label);
try {
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn3.setVisibility(View.VISIBLE);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
// }
};
page.setReuseBitmap(true);
doc.addPage(page);
}
doc.setRenderWidth(2800);
doc.setRenderHeight(3900);
doc.setOrientation(PdfDocument.A4_MODE.PORTRAIT);
// doc.setProgressTitle(R.string.gen_please_wait);
// doc.setProgressMessage(R.string.gen_pdf_file);
doc.setFileName(label);
doc.setInflateOnMainThread(false);
doc.setListener(new PdfDocument.Callback() {
@Override
public void onComplete(File file) {
Log.i(PdfDocument.TAG_PDF_MY_XML, "Complete" + file.getAbsolutePath());
{
String[] mailto = {""};
Uri uri = Uri.fromFile(file.getAbsoluteFile());
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, mailto);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Label for " + label);
emailIntent.putExtra(Intent.EXTRA_TEXT, "By android device");
emailIntent.setType("application/pdf");
emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(emailIntent, "Send email using:"));
}
}
@Override
public void onError() {
Log.i(PdfDocument.TAG_PDF_MY_XML, "Error");
}
});
try {
doc.createPdf(mContext);
}
catch(Exception e)
{
e.printStackTrace();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
});
home.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(PrintLabelScreen.this, MainScreen.class));
}
});
next.setOnClickListener(new View.OnClickListener() {
ProgressDialog mProgressDialog;
@Override
public void onClick(View v) {
//mProgressDialog = ProgressDialog.show(mContext, "", "Loading...");
if(count1>=0&&count1<finallist.size()-1)
{
count1++;
for (int i = 0; i < finallist.size(); i++) {
if (i == count1) {
favlist = finallist.get(i);
list1.setAdapter(null);
list2.setAdapter(null);
list3.setAdapter(null);
list4.setAdapter(null);
//labeladapter.notifyDataSetChanged();
new BackgroundProcess().execute(favlist);
}
}
}
}
});
prev.setOnClickListener(new View.OnClickListener() {
// ProgressDialog mProgressDialog;
@Override
public void onClick(View v) {
// Log.d("sublistsize","sublistsize"+ prevcount);
Log.d("count1","count2"+count1);
Log.d("count1","count2"+finallist.size());
Log.d("prevcount"," prevcount"+count1);
if(count1>0 && count1<=finallist.size()) {
count1--;
for (int i = 0; i < finallist.size(); i++) {
if (i == count1) {
favlist=finallist.get(i);
list1.setAdapter(null);
list2.setAdapter(null);
list3.setAdapter(null);
list4.setAdapter(null);
//labeladapter.notifyDataSetChanged();
new BackgroundProcess().execute(favlist);
}
}
}
}
});
}
class BackgroundProcess extends AsyncTask<List<ArrayList<String>>, String, String> {
private ProgressDialog progress;
List<ArrayList<String>> fine=null;
Set<Integer> m1Key;
ProgressDialog dialog = new ProgressDialog(PrintLabelScreen.this);
@Override
protected void onPreExecute() {
dialog.setMessage("Loading...");
//show dialog
dialog.show();
super.onPreExecute();
}
@Override
protected String doInBackground(List<ArrayList<String>>... params) {
try {
fine= params[0];
Log.d("finesize", "finesize" + fine.size());
}
catch(Exception e)
{
e.printStackTrace();
}
//m1Key = m1.keySet();
if (fine.size()!= 0) {
return "1";
}
else {
return "0";
}
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if(dialog != null && dialog.isShowing()){
dialog.dismiss();
}
if (result.equalsIgnoreCase("1")) {
for (int i = 0; i < fine.size(); i++) {
if (i == 0) {
if (fine.get(i).size() != 0) {
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn.setVisibility(View.VISIBLE);
fragile = "Y";
} else {
fragilebtn.setVisibility(View.GONE);
fragile = "N";
}
// Log.d("sublistcount", "sublistcount" +fine.get(i));
PrintLabelAdapter labeladapternew = new PrintLabelAdapter(mContext,R.layout.labeitem,
fine.get(i));
list1.setAdapter(labeladapternew);
labeladapternew.notifyDataSetChanged();
list1.invalidateViews();
}
}
if (i == 1) {
if (fine.get(i).size() != 0) {
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn1.setVisibility(View.VISIBLE);
fragile = "Y";
} else {
fragilebtn1.setVisibility(View.GONE);
fragile = "N";
}
PrintLabelAdapter labeladapternew = new PrintLabelAdapter(mContext,R.layout.labeitem,
fine.get(i));
//list2.setAdapter(null);
list2.setAdapter(labeladapternew);
labeladapternew.notifyDataSetChanged();
list2.invalidateViews();
}
}
if (i == 2) {
if (fine.get(i).size() != 0) {
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn2.setVisibility(View.VISIBLE);
fragile = "Y";
} else {
fragilebtn2.setVisibility(View.GONE);
fragile = "N";
}
// Log.d("sublistcount", "sublistcount" +fine.get(i));
PrintLabelAdapter labeladapternew = new PrintLabelAdapter(mContext,R.layout.labeitem,
fine.get(i));
// list3.setAdapter(null);
list3.setAdapter(labeladapternew);
labeladapternew.notifyDataSetChanged();
list3.invalidateViews();
}
}
if (i == 3) {
if (fine.get(i).size() != 0) {
if (fragile.equalsIgnoreCase("Y")) {
fragilebtn3.setVisibility(View.VISIBLE);
fragile = "Y";
} else {
fragilebtn3.setVisibility(View.GONE);
fragile = "N";
}
//list4.setAdapter(null);
// Log.d("sublistcount", "sublistcount" +fine.get(i));
PrintLabelAdapter labeladapternew = new PrintLabelAdapter(mContext,R.layout.labeitem,
fine.get(i));
list4.setAdapter(labeladapternew);
labeladapternew.notifyDataSetChanged();
list4.invalidateViews();
}
}
}
}
}
}
// chops a list into non-view sublists of length L
static <T> List<List<T>> chopped(List<T> list, final int L) {
List<List<T>> parts = new ArrayList<List<T>>();
final int N = list.size();
for (int i = 0; i < N; i += L) {
parts.add(new ArrayList<T>(
list.subList(i, Math.min(N, i + L)))
);
}
return parts;
}
}
EDIT
Its working for first time, and also works when I press back and next buttons at bottom, but after I send the mail, and come back, its not refreshing