2017-03-29 17 views
0

私はoldTextViewの機能をID nameAgeLabelのTextViewに入れ替えたいと思っています。TextView from cardView

"nameAgeLabel"は、表示ビューの外にあります。 現在ロードされているビューに応じて、現在のように動的にテキストを変更する必要があります。

public View getView(final int position, View View, ViewGroup parent) { 


    Log.d("position:",String.valueOf(position)); 
    Log.d("laenge user id",String.valueOf(userIds.size())); 

    String currentUserId = userIds.get(position); 
    LayoutInflater inflater = (LayoutInflater)context.getSystemService 
      (Context.LAYOUT_INFLATER_SERVICE); 

View view = inflater.inflate(R.layout.content_single_mode_vc, parent, false); 

    ImageView imageView = (ImageView) view.findViewById(R.id.offer_image); 
    Bitmap image = userImages.get(currentUserId); 
    imageView.setImageBitmap(image); 


TextView oldTextView= (TextView) view.findViewById(R.id.textView2); 
oldTextView.setText(userNames.get(currentUserId)); 
    //works fine 

    return view; 
} 

私のonCreateは次のようになります。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_single_mode_vc); 
    TextView nameAge = (TextView) findViewById(R.id.nameAgeLabel); 

    updateImage(); 
    //(thats another method) 

} 

acvivity_single_mode_vc.xml:

<?xml version="1.0" encoding="utf-8"?> 
<com.daprlabs.aaron.swipedeck.layouts.SwipeFrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:swipedeck="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/swipeLayout" 
    android:orientation="vertical" 
    android:background="@color/white"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"/> 
<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" 
    /> 
<com.daprlabs.aaron.swipedeck.SwipeDeck 
    android:id="@+id/swipe_deck" 
    android:layout_width="match_parent" 
    android:layout_height="600dp" 
    android:padding="20dp" 
    android:layout_marginTop="60dp" 
    swipedeck:max_visible="3" 
    swipedeck:card_spacing="15dp" 
    swipedeck:swipe_enabled="true" > 

</com.daprlabs.aaron.swipedeck.SwipeDeck> 
<Button 
    android:id="@+id/close" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:layout_marginBottom="50dp" 
    android:layout_marginLeft="20dp" 
    android:layout_gravity="bottom" 
    android:elevation="1dp" 
    android:background="@drawable/close" 
    android:backgroundTint="@color/light" /> 

<Button 
    android:id="@+id/check" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:layout_marginBottom="50dp" 
    android:layout_marginRight="20dp" 
    android:layout_gravity="bottom|right" 
    android:background="@drawable/check" 
    android:backgroundTint="@color/light" /> 

<TextView 

    android:layout_width="match_parent" 
    android:padding="20dp" 
    android:layout_marginLeft="20dp" 
    android:layout_marginRight="20dp" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="350dp" 
    android:id="@+id/nameAgeLabel" 
    android:background="@color/separator" 
    /> 
</com.daprlabs.aaron.swipedeck.layouts.SwipeFrameLayout> 

がcontent_single_mode_vc.xml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/card_view" 
    android:layout_gravity="center" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    card_view:cardCornerRadius="4dp" 
    card_view:cardElevation="4dp" 
    card_view:cardUseCompatPadding="true" 
    android:layout_margin="8dp" 
    android:gravity="center_horizontal" 
    android:padding="25dp" 
    android:clipChildren="true"> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
<ImageView 
     android:id="@+id/offer_image" 
     android:layout_width="match_parent" 
     android:scaleType="centerCrop" 
     android:adjustViewBounds="true" 
     android:layout_height="200dp"/> 
<TextView 
     android:text="TextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginLeft="137dp" 
     android:layout_marginStart="137dp" 
     android:layout_marginTop="222dp" 
     android:id="@+id/textView2"/> 

</RelativeLayout> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:gravity="center"> 
    <ImageView 
     android:layout_weight="1" 
     android:id="@+id/left_image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/offer_image" 
     android:layout_centerHorizontal="true" /> 
    <ImageView 
     android:layout_weight="1" 
     android:id="@+id/right_image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/offer_image" 
     android:layout_centerHorizontal="true" /> 
    </LinearLayout> 
</LinearLayout> 
</android.support.v7.widget.CardView> 

ので、主な質問はどこで、私はどうやって?私は今と同じ結果を得るためにtextview "nameAge"を変更する必要がありますか?私のgetViewメソッドではdoesntが働いているので、

TextView nameAge= (TextView) view.findViewById(R.id.nameAgeLabel) 

IDが "nameAgeLabel"のtextViewは含まれていません。 onCreateでそれをすることは意味がありません。 getViewで新しいビューを作成すると、2つのビューを返すことができず、さらに "android-requestlayout-incorrectly ..:"というメッセージが表示されます。

ありがとうございます。

編集:クラス名+コンストラクタ

public class SwipeDeckAdapter extends BaseAdapter { 
[...] 
public SwipeDeckAdapter(LinkedList<String> data, Context context, LinkedList<String> userIds, Hashtable<String,String> userNames, Hashtable<String,String> userHashtags, Hashtable<String,Bitmap> userImages, Hashtable<String,ArrayList<String>> userAccepted) { 
    this.data = data; 
    this.context = context; 
    this.userIds = userIds; 
    this.userNames = userNames; 
    this.userHashtags = userHashtags; 
    this.userImages = userImages; 
    this.userAccepted = userAccepted; 
} 
} 

答えて

0

あなたの説明が不完全であるので、私は推測してみてください。

SwipeFrameLayoutのアダプタを作成し、ActivityからTextViewを渡します。コンストラクタまたは別のメソッドのいずれか。

public class CustomSwipeDeckAdapter extends SwipeDeckAdapter { 

    private AppCompatTextView mNameAgeLabel; 

    public SwipeDeckAdapter(List<String> data, Context context, AppCompatTextView textview) { 
     mNameAgeLabel = textView; 
     […] 
    } 

    public View getView(final int position, View View, ViewGroup parent) { 
     […] 
     mNameAgeLabel.setText(); 
    } 
+0

よう

何かがあなたの高速応答をいただき、ありがとうございます。はい、私はSwipeDeckAdapterコンストラクタを追加するのを忘れていました。私は最初の投稿でそれを編集します。あなたは他のことを忘れていますか?私はコンストラクタでそれを試しましたが、mNameAgeLabelがnullだったためにnullpointerexceptionを修正した後も、UsernameはまだmNameAgeLabelに表示されません。 AppCompatTextView内の正しいコンテキストではない可能性がありますか? – matt

+0

私はそれをありがとう!それは正しいヒントだった。 – matt

関連する問題