支援が必要なため、項目ごとにいくつかのテキスト フィールドと 2 つのボタン (通話ボタンとテキスト メッセージ ボタンを備えた連絡先アプリなど) を表示したいリストビュー アクティビティがあります。チュートリアルを読んで、ボタンをクリック可能にする方法を見つけました。 、しかし今、私のテキストビュー(1を除くすべて)は、レイアウトファイルに残したストックテキスト以外のデータを表示しません.1つのテキストビューには、必要なデータが表示されます.カスタムSCAのどこにも表示されません特定のデータをフィードするので、バックグラウンドで発生すると想定しています。
私の R.id.company_address_details_phone は、自分の操作なしで必要なデータをロードしますが、ViewHolder の他の TextViews にはデータが表示されません。呼び出しボタンに接続された For ループはカーソルからデータを出力するので、データが欠落しているわけではありません。ありとあらゆる助けをいただければ幸いです。
補足として、最初にコードを書き、カスタム SimpleCursorAdapter を使用しなかったとき、すべてのテキスト ビューが期待どおりに読み込まれました (ボタンをクリックできませんでした)。これにより、CompanyActivity クラスにはエラーがなく、CompanyDetailsCursroAdapter クラスに何かが欠けていると思われます。
*編集*** だから、振り返って何かを試した後、自分の質問に答えています。データが取り込まれているビューではなく、ビューの 1 つにデフォルトのテキストを設定して、DB から引き出されたかのように見せました。以下のコードを使用して、カスタム カーソル アダプターに渡されたカーソル アダプターからのデータをビューに入力しています。これが最善の方法なのか、それともより合理化された、またはAndroidで承認された方法があるのか を知りたい.
viewHolder.addressTextView.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("AddressStreet")));
viewHolder.cityTextView.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("AddressCity")));
viewHolder.stateTextView.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("AddressState")));
viewHolder.zipTextView.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("AddressZip")));
viewHolder.phoneTextView.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("AddressPhone")));
CompanyDetailsCursorAdapter.java
public class CompanyDetailsCursorAdapter extends SimpleCursorAdapter implements Filterable{
private final Context context;
private int layout;
Cursor companyDetailsCursor;
public CompanyDetailsCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
this.context = context;
this.layout = layout;
this.companyDetailsCursor = c;
}
static class ViewHolder {
protected TextView addressTextView;
protected TextView cityTextView;
protected TextView stateTextView;
protected TextView zipTextView;
protected TextView phoneTextView;
protected ImageButton callButton;
protected ImageButton mapButton;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
final LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.company_address_details, null);
convertView.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
viewHolder = new ViewHolder();
viewHolder.addressTextView = (TextView) convertView.findViewById(R.id.company_address_details_street);
viewHolder.cityTextView = (TextView) convertView.findViewById(R.id.company_address_details_city);
viewHolder.stateTextView = (TextView) convertView.findViewById(R.id.company_address_details_state);
viewHolder.zipTextView = (TextView) convertView.findViewById(R.id.company_address_details_zip);
viewHolder.phoneTextView = (TextView) convertView.findViewById(R.id.company_address_details_phone);
viewHolder.callButton = (ImageButton) convertView.findViewById(R.id.company_address_details_call_button);
viewHolder.callButton.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
companyDetailsCursor.moveToPosition(position);
if (RouteTrackerGlobal.APP_DEBUG) { Log.d(RouteTrackerGlobal.APP_TAG,"getview position set to " + String.valueOf(position));}
for (int i = 0; i < companyDetailsCursor.getColumnCount();i++){
Log.i(RouteTrackerGlobal.APP_TAG, companyDetailsCursor.getString(i));
}
}
});
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
return convertView;
}
会社活動.java
public class CompanyActivity extends ListActivity {
DbAdapter dbAdapter;
int companyID;
Context context = this;
Cursor companyDetailsCursor;
@Override
public void onCreate(Bundle savedInstanceBundle) {
super.onCreate(savedInstanceBundle);
dbAdapter = new DbAdapter(this);
setContentView(R.layout.company_activity);
Bundle companyActivityBundle = getIntent().getExtras();
companyID = companyActivityBundle.getInt("CompanyID");
ListView list = getListView();
list.setOnItemLongClickListener(new OnItemLongClickListener(){
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
return false;
}
});
}
@Override
public void onPause() {
dbAdapter.close();
super.onPause();
}
@Override
public void onResume() {
dbAdapter.open();
super.onResume();
loadDetails();
}
@Override
protected void onListItemClick (ListView l, View v, int position, long id){
//TODO: When item in list clicked, call activity to display address and directions
}
public void loadDetails() {
TextView companyLabel = (TextView) findViewById(R.id.company_activity_company_label);
companyDetailsCursor = dbAdapter.getCompanyDetails(companyID);
startManagingCursor(companyDetailsCursor);
companyDetailsCursor.moveToFirst();
companyLabel.setText(companyDetailsCursor.getString(companyDetailsCursor.getColumnIndex("CompanyName")));
String[] columns = new String[] {"AddressPhone", "AddressStreet", "AddressCity", "AddressState", "AddressZip"};
int[] to = new int[] {R.id.company_address_details_phone, R.id.company_address_details_street, R.id.company_address_details_city, R.id.company_address_details_state, R.id.company_address_details_zip};
CompanyDetailsCursorAdapter companyDetailsAdapter = new CompanyDetailsCursorAdapter(context, R.layout.company_address_details, companyDetailsCursor, columns, to);
setListAdapter(companyDetailsAdapter);
}
}
Company_Address_Details.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/company_address_details_phone"
style="@style/company_address_listview"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="@string/company_address_details_phone_default" />
<ImageButton android:id="@+id/company_address_details_call_button"
style="@style/company_address_listview"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:background="@android:color/transparent"
android:src="@android:drawable/sym_action_call"
android:contentDescription="@string/company_address_details_phone_hint"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/company_address_details_call_button1"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/company_address_details_street"
style="@style/company_address_listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/company_address_details_street_default" />
</LinearLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/company_address_details_city"
style="@style/company_address_listview"
android:layout_width="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="@string/company_address_details_city_default" />
<TextView
android:id="@+id/company_address_details_state"
style="@style/company_address_listview"
android:layout_centerInParent="true"
android:layout_centerVertical="true"
android:text="@string/company_address_details_state_default" />
<TextView
android:id="@+id/company_address_details_zip"
style="@style/company_address_listview"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="@string/company_address_details_zip_default" />
</RelativeLayout>
</LinearLayout>
<ImageButton
android:id="@+id/company_address_details_call_button1"
style="@style/company_address_listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerHorizontal="false"
android:layout_centerInParent="false"
android:layout_centerVertical="true"
android:background="@android:color/transparent"
android:contentDescription="@string/company_address_details_phone_hint"
android:paddingLeft="20dp"
android:src="@android:drawable/ic_dialog_map" />
</RelativeLayout>
</LinearLayout>