I have an activity with a custom list adapter. If the arraylist populating the listview is empty I display a textbox to the user, otherwise the textbox becomes invisible and i display the listview. The textbox appears every time the arraylist is empty, however when it is not I get a blank screen. I'm not sure if this is because my listview is invisible or because it isn't populated properly. This worked perfectly fine yesterday but I've made a lot of changes to the class since then and I'm not sure which one caused this problem. I've been trying to follow the code for the past couple hours to solve this, I noticed that if I add a log
call in the getView()
method of the adapter, it isn't displayed, if I add it in the constructor it shows fine. I've also made sure the adapter gets called and enters the proper condition in the if statement by using log
. I'm hoping one of you will be able to spot the problem as I can't.
Method which calls adapter :
private void PopulateLister(ArrayList<BetDisplayer> listwriterr) {
Log.d("POPULATING", listwriterr.toString());
if (listwriterr.isEmpty()) {
TextView emptybet = (TextView) findViewById(R.id.nobetstxtbox);
// emptybet.setText("None of your bets have been settled yet.");
emptybet.setVisibility(View.VISIBLE);
ListView listView = (ListView) findViewById(R.id.betslistviews);
listView.setVisibility(View.GONE);
}
else if (listwriterr.size() > 0){
TextView emptybet = (TextView) findViewById(R.id.nobetstxtbox);
emptybet.setVisibility(View.GONE);
ListView listView = (ListView) findViewById(R.id.betslistviews);
listView.setVisibility(View.VISIBLE);
if (listwriterr.get(0).getStatus().equals("open")){
ArrayAdapter<BetDisplayer> adapter = new MyListAdapter1();
listView.setAdapter(adapter);
}
else {
ArrayAdapter<BetDisplayer> adapter = new MyListAdapter2();
listView.setAdapter(adapter);
}
}
}
XML of activity :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout23"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:orientation="vertical">
<!-- Main ListView
Always give id value as list(@android:id/list)
-->
<fragment
android:id="@+id/fragment"
android:name="com.example.albert.betterapp.menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:layout="@layout/fragment_menu" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_gravity="center"
android:orientation="horizontal"
android:weightSum="100">
<LinearLayout
android:id="@+id/openbetslayout"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="49"
android:tag=""
android:background="@drawable/bettypeselector"
android:clickable="true">
<TextView
android:id="@+id/openbetstxtview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:clickable="false"
android:gravity="center"
android:text="Open Bets"
android:textColor="#B4B5AE"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@drawable/seperator">
</LinearLayout>
<LinearLayout
android:id="@+id/closedbetslayout"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="49"
android:tag=""
android:background="@drawable/bettypeselector"
android:clickable="true">
<TextView
android:id="@+id/settledbetstxtview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:clickable="false"
android:gravity="center"
android:text="Settled Bets"
android:textColor="#B4B5AE"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="fill_parent"
android:id = "@+id/displayallbetsrefresh"
android:layout_height="wrap_content">
<TextView
android:layout_width="fill_parent"
android:layout_height="200dp"
android:id="@+id/nobetstxtbox"
android:text="You currently don't have any open bets saved."
android:textStyle="bold"
android:layout_gravity="center"
android:gravity="center"
android:visibility="gone"
android:textSize="17sp"
android:textColor="#067103"/>
<ListView
android:id="@+id/betslistviews"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/betcolor"></ListView>
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
Adapter :
private class MyListAdapter1 extends ArrayAdapter<BetDisplayer> {
public MyListAdapter1() {
super(DisplayAllBets.this, R.layout.activity_singletotalbet, openbetsarray);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.d("TESTING", "123123123");
itemView = convertView;
if (itemView == null) {
itemView = getLayoutInflater().inflate(R.layout.activity_singletotalbet, parent, false);
}
Button v = (Button) itemView.findViewById(R.id.detailsbutton);
BetDisplayer currentwriter = openbetsarray.get(position);
Log.d("TESTING", currentwriter.getSelections());
Log.d("TESTING2", currentwriter.getSelections());
String selections = currentwriter.getSelections();
int numberofselections = 0;
for (int i = 0; i < selections.length(); i++) {
if (selections.charAt(i) == '/') {
numberofselections++;
}
}
if (numberofselections == 1) {
TextView descriptor = (TextView) itemView.findViewById(R.id.no);
descriptor.setText("Single");
} else if (numberofselections == 2) {
TextView descriptor = (TextView) itemView.findViewById(R.id.no);
descriptor.setText("Double");
} else if (numberofselections == 3) {
TextView descriptor = (TextView) itemView.findViewById(R.id.no);
descriptor.setText("Treble");
} else {
TextView descriptor = (TextView) itemView.findViewById(R.id.no);
descriptor.setText("Accumulator" + "(" + numberofselections + ")");
}
TextView status = (TextView) itemView.findViewById(R.id.status);
status.setText(currentwriter.getStatus());
Log.d("ERRORDEBUG", currentwriter.toString());
if (status.getText().toString().equals("open")) {
TextView winnings = (TextView) itemView.findViewById(R.id.winnings);
winnings.setText("-");
/*LinearLayout displaylayout = (LinearLayout) itemView.findViewById(R.id.displaylayout);
displaylayout.setBackgroundColor(Color.parseColor("#FFFFFF"));
Button b = (Button) itemView.findViewById(R.id.detailsbutton);
b.setBackgroundResource(R.drawable.btnback);*/
}
else if (status.getText().toString().equals("lost")) {
TextView winnings = (TextView) itemView.findViewById(R.id.winnings);
winnings.setText("0");
/*LinearLayout displaylayout = (LinearLayout) itemView.findViewById(R.id.displaylayout);
Button b = (Button) itemView.findViewById(R.id.detailsbutton);
b.setBackgroundResource(R.drawable.btnbacklost);
displaylayout.setBackgroundResource(R.drawable.lost);*/
}
else {
TextView winnings = (TextView) itemView.findViewById(R.id.winnings);
winnings.setText(Integer.toString(currentwriter.getReturns()));
/* Button b = (Button) itemView.findViewById(R.id.detailsbutton);
b.setBackgroundResource(R.drawable.btnback);
LinearLayout displaylayout = (LinearLayout) itemView.findViewById(R.id.displaylayout);
displaylayout.setBackgroundResource(R.drawable.won);*/
}
TextView winningss = (TextView) itemView.findViewById(R.id.winningss);
winningss.setText(Integer.toString(currentwriter.getReturns()));
TextView stakes = (TextView) itemView.findViewById(R.id.stakes);
stakes.setText(Integer.toString(currentwriter.getStake()));
TextView tokens = (TextView) itemView.findViewById(R.id.tokens);
tokens.setText(currentwriter.getId().substring(0,10));
TextView teams = (TextView) itemView.findViewById(R.id.teams);
TextView finalteams = (TextView) itemView.findViewById(R.id.actteams);
String userselectionssetter = currentwriter.getUserselections();
String actteamssetter = currentwriter.getActualselections();
teams.setText(userselectionssetter);
finalteams.setText(actteamssetter);
return itemView;
}
}