ListView
私は2つを追加したカスタムを作成しました。1つは日付を表示しTextView
、もう1つはその特定の日付に入力された重みを表示します。ここで必要なのは、2番目に重みを表示し、ユーザーが入力した重みとして設定されたテキストビューの幅です。私が書いたコードはいくつかの問題を示しています。これは、ユーザーがウェイト70と75を入力すると、の幅が同じサイズを示すことを意味します。なぜこれが起こるのか。誰かが私がこれを解決するのを手伝ってください。TextView
TextView
TextView
TextView
リストアクティビティのXMLコード
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/img_allnotes_bg" >
<TextView
android:id="@+id/txt_weight_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/image_divder1"
android:layout_marginTop="15dp"
android:gravity="center_horizontal|center_vertical"
android:text="@string/txt_weight_title"
android:textColor="#5f5f5f"
android:textSize="@dimen/font_size_page_text" >
</TextView>
<ListView
android:id="@+id/weight_list_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/bottom_control_bar"
android:layout_alignParentLeft="true"
android:layout_below="@+id/image_divider2"
android:layout_marginBottom="15dp"
android:layout_marginTop="2dp"
android:cacheColorHint="#00000000"
android:divider="@null"
android:dividerHeight="0dp"
android:listSelector="#00000000" >
</ListView>
</RelativeLayout>
ListViewアイテムのXMLコード
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="2dip" >
<TextView
android:id="@+id/txt_weightdate_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="60dp"
android:layout_marginRight="60dp"
android:focusable="false"
android:textColor="#5f5f5f"
android:textSize="@dimen/font_size_page_text" >
</TextView>
<TextView
android:id="@+id/txt_weight_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_weightdate_display"
android:layout_marginLeft="60dp"
android:layout_marginRight="60dp"
android:layout_marginTop="5dp"
android:gravity="center"
android:focusable="false"
android:textColor="#5f5f5f"
android:background="#00FFFF"
android:textSize="@dimen/font_size_page_text" >
</TextView>
</RelativeLayout>
リストビューを生成するためのJavaコード
public void displayWeights()
{
m_allWeightsList = (ListView) findViewById(R.id.weight_list_view);
int iWeightCount = CycleManager.getSingletonObject().getWeightCount();
m_weightsdateDisplay = new String[iWeightCount];
m_weightDisplay = new String[iWeightCount];
m_enStage = new int[iWeightCount];
int i;
for (i=0; i<iWeightCount; i++)
{
m_weightsdateDisplay[i] = "";
Date dtWeightDate = CycleManager.getSingletonObject().getWeightDate(i);
m_enStage[i] = CycleManager.getSingletonObject().getCycleStage(dtWeightDate);
m_weightsdateDisplay[i] = formator.format(dtWeightDate.getTime());
m_weightDisplay[i] = "";
m_weightDisplay[i] = CycleManager.getSingletonObject().getWeight(dtWeightDate);
}
m_adapter = new AllWeightsAdapter(this, m_weightsdateDisplay, m_weightDisplay);
m_allWeightsList.setAdapter(m_adapter);
}
class AllWeightsAdapter extends BaseAdapter
{
public String m_weightsDateDisplay[];
public String m_weightsDisplay[];
public Activity m_context;
public LayoutInflater m_inflater;
public AllWeightsAdapter(Activity m_context, String[] m_weightsDateDisplay, String[] m_weightsDisplay)
{
super();
this.m_context = m_context;
this.m_weightsDateDisplay = m_weightsDateDisplay;
this.m_weightsDisplay = m_weightsDisplay;
this.m_inflater = (LayoutInflater)m_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public AllWeightsAdapter()
{
}
public int getCount()
{
return m_weightsDateDisplay.length;
}
public Object getItem(int position)
{
return null;
}
public long getItemId(int position)
{
return 0;
}
public class ViewHolder
{
TextView txt_weightdt_display;
TextView txt_weight_display;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
Typeface face = Typeface.createFromAsset(m_context.getAssets(), "fonts/Cicle Semi.ttf");
if(convertView == null)
{
holder = new ViewHolder();
convertView = m_inflater.inflate(R.layout.all_weights_list, null);
holder.txt_weightdt_display = (TextView) convertView.findViewById(R.id.txt_weightdate_display);
holder.txt_weight_display = (TextView) convertView.findViewById(R.id.txt_weight_display);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder)convertView.getTag();
}
// Added Weight Date in List View Component
holder.txt_weightdt_display.setText(m_weightsDateDisplay[position]);
holder.txt_weightdt_display.setTypeface(face);
// Added Weights in List View Component
double factor, width, scale, borderwidth, minScreenWidth = 40, maxScreenWidth = 200;
double maxWeight = CycleManager.getSingletonObject().getMaxWeight();
double minWidth = CycleManager.getSingletonObject().getMinWeight();
scale = maxWeight - minWidth;
factor = (maxScreenWidth - minScreenWidth) / scale;
width = (maxWeight - Double.parseDouble(m_weightsDisplay[position])) * factor;
borderwidth = maxScreenWidth - width;
holder.txt_weight_display.setText(m_weightsDisplay[position]);
holder.txt_weight_display.setMinWidth((int)borderwidth);
holder.txt_weight_display.setTypeface(face);
return convertView;
}
}
}
Scrennshot