Я уверен, что я делаю что-то глупое, но я действительно запутался по этому поводу ...
Большая часть этого кода взята из замечательных ответов на StackOverflow….
В приведенном ниже коде - я получаю строку неисправности, показанную в верхней части строки тревоги, но
определение ячейки помещает строку тревоги сверху.
Моя ячейка: alarm_list_row
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:orientation="vertical"
>
<TextView
android:id="@+id/ar_alarm_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+strings/alarm_dummy" />
<TextView
android:id="@+id/ar_trouble_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+strings/trouble_dummy" />
</LinearLayout>
Я использую адаптер, расширенный от ArrayAdapter
public class ComfortListAlarmArrayAdapter extends ArrayAdapter<StringPair> {
private final Context context;
private final ArrayList<StringPair> items;
//Constructors
public ComfortListAlarmArrayAdapter(Context context, ArrayList<StringPair> items) {
super(context, R.layout.comfort_alarm_cell);
this.context = context;
this.items = items;
}
private class AlarmViewHolder {
public TextView alarm;
public TextView trouble;
}
private AlarmViewHolder alarmHolder;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView=convertView;
if(rowView == null){
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.alarm_list_row, parent, false);
alarmHolder = new AlarmViewHolder();
alarmHolder.alarm = (TextView) rowView.findViewById(R.id.ar_alarm_text);
alarmHolder.trouble = (TextView) rowView.findViewById(R.id.ar_trouble_text);
rowView.setTag(alarmHolder);
// LayoutInflater inflater = context.getLayoutInflater();
// rowView = inflater.inflate(R.layout.comfort_list_row, null, true);
} else alarmHolder = (AlarmViewHolder) rowView.getTag();
StringPair alarm = items.get(position);
if (alarm != null) {
alarmHolder.alarm.setText(alarm.getAlarm());
if (alarm.getTrouble().trim().length() == 0) {
alarmHolder.trouble.setText(" ");
//alarmHolder.trouble.setVisibility(android.view.View.INVISIBLE);
} else {
alarmHolder.trouble.setText(alarm.getTrouble());
//alarmHolder.trouble.setVisibility(android.view.View.VISIBLE);
}
Log.v("Alarm View", alarm.getAlarm()+"/"+alarm.getTrouble());
}
rowView.setBackgroundColor(Color.BLACK);
return rowView;
}
/* (non-Javadoc)
* @see android.widget.ArrayAdapter#getCount()
*/
@Override
public int getCount() {
return items.size();
//return super.getCount();
}
}
и он используется в AlarmActivity
public class AlarmActivity extends Activity implements MessageThumper{
private ComfortListAlarmArrayAdapter alarmListAdapter;
private final int AA_NEW_MESSAGE = 1;
CommunicationsController getComms()
{
ComfortApp main = (ComfortApp) getApplicationContext();
return main.Comms;
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alarms);
final ListView lv_1 = (ListView) findViewById(R.id.alarm_list);
alarmListAdapter = new ComfortListAlarmArrayAdapter(AlarmActivity.this, getComms().am_alarmStuff);
lv_1.setAdapter(alarmListAdapter);
}
Handler alarmUpdateHandler = new Handler(){
@SuppressWarnings("unchecked")
@Override
public void handleMessage(Message msg) {
if(msg.what == AA_NEW_MESSAGE){
//update all adapters
((ComfortListAlarmArrayAdapter)((ListView) findViewById(R.id.alarm_list)).getAdapter()).notifyDataSetChanged();
}
super.handleMessage(msg);
}
};
public void passMessage(String msg, String p1, String p2) {
if (msg.equals("NEW_ALARM"))
{
Message M = new Message();
M.what = AA_NEW_MESSAGE;
this.alarmUpdateHandler.sendMessage(M);
}
}
}
если мой logCat показывает
03-22 01:25:42.112: I/CommsController:setAlarm(26655): System Armed,Code 240
the cell shows
------------
Code 240
System Armed
------------
Может кто-нибудь указать, что я пропускаю?
Прошу прощения за дополнительную сложность - сообщение, передаваемое из потока сообщений и т. Д., Осталось в нем, но в сообщении журнала должно быть указано, что строки находятся в правильных местах….