package org.intermine.app.adapter;
/*
* Copyright (C) 2015 InterMine
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. See the LICENSE file for more
* information or http://www.gnu.org/copyleft/lesser.html.
*
*/
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 org.intermine.app.R;
import org.intermine.app.core.Gene;
import org.intermine.app.util.Strs;
import org.intermine.app.util.ThreadPreconditions;
import org.intermine.app.util.Views;
import java.util.Collections;
import java.util.List;
/**
* @author Daria Komkova <Daria.Komkova @ hotmail.com>
*/
public class GenesAdapter extends BaseAdapter {
private final LayoutInflater mLayoutInflater;
private final Context mContext;
private List<Gene> mGenes = Collections.emptyList();
public GenesAdapter(Context context) {
mContext = context;
mLayoutInflater = LayoutInflater.from(mContext);
}
public void updateGenes(List<Gene> genes) {
mGenes = genes;
notifyDataSetChanged();
}
@Override
public int getCount() {
return mGenes.size();
}
@Override
public Object getItem(int position) {
return mGenes.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (null == convertView) {
v = mLayoutInflater.inflate(R.layout.gene_list_item, parent, false);
v.setTag(R.id.primary_db_id_title, v.findViewById(R.id.primary_db_id_title));
v.setTag(R.id.primary_db_id_value, v.findViewById(R.id.primary_db_id_value));
v.setTag(R.id.name_title, v.findViewById(R.id.name_title));
v.setTag(R.id.name_value, v.findViewById(R.id.name_value));
v.setTag(R.id.organism_name_title, v.findViewById(R.id.organism_name_title));
v.setTag(R.id.organism_name_value, v.findViewById(R.id.organism_name_value));
v.setTag(R.id.symbol_title, v.findViewById(R.id.symbol_title));
v.setTag(R.id.symbol_value, v.findViewById(R.id.symbol_value));
v.setTag(R.id.gene_mine, v.findViewById(R.id.gene_mine));
}
TextView primaryIdTitle = (TextView) v.getTag(R.id.primary_db_id_title);
TextView primaryIdValue = (TextView) v.getTag(R.id.primary_db_id_value);
TextView nameTitle = (TextView) v.getTag(R.id.name_title);
TextView nameValue = (TextView) v.getTag(R.id.name_value);
TextView organismNameTitle = (TextView) v.getTag(R.id.organism_name_title);
TextView organismNameValue = (TextView) v.getTag(R.id.organism_name_value);
TextView symbolTitle = (TextView) v.getTag(R.id.symbol_title);
TextView symbolValue = (TextView) v.getTag(R.id.symbol_value);
TextView mineName = (TextView) v.getTag(R.id.gene_mine);
Gene gene = (Gene) getItem(position);
String primaryDbId = gene.getPrimaryDBId();
if (Strs.isNullOrEmpty(primaryDbId)) {
Views.setGone(primaryIdTitle, primaryIdValue);
} else {
Views.setVisible(primaryIdTitle, primaryIdValue);
primaryIdValue.setText(primaryDbId);
}
String name = gene.getName();
if (Strs.isNullOrEmpty(name)) {
Views.setGone(nameTitle, nameValue);
} else {
Views.setVisible(nameTitle, nameValue);
nameValue.setText(name);
}
String organismName = gene.getOrganismName();
if (Strs.isNullOrEmpty(organismName)) {
Views.setGone(organismNameTitle, organismNameValue);
} else {
Views.setVisible(organismNameTitle, organismNameValue);
organismNameValue.setText(organismName);
}
String symbol = gene.getSymbol();
if (Strs.isNullOrEmpty(symbol)) {
Views.setGone(symbolTitle, symbolValue);
} else {
Views.setVisible(symbolTitle, symbolValue);
symbolValue.setText(symbol);
}
mineName.setText(gene.getMine());
return v;
}
}