使gridView具有多个布局

时间:2016-04-07 11:45:14

标签: android object gridview

我想在gridView中设置一个对象:名为artefact的对象可以是图像或消息,但在运行我的代码并添加对象后,网格视图不会出现。 这是我的代码。 这是我的适配器

 public ArtifactAdapter(Context context,List<Artifact> artifacts)
{
    this.context =context;
    this.artifacts = artifacts;
}
@Override
public int getCount() {

    // Number of times getView method call depends upon gridValues.length
    return artifacts.size();
}

@Override
public Object getItem(int position) {

    return null;
}

@Override
public long getItemId(int position) {

    return 0;
}

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

    // LayoutInflator to call external grid_item.xml file


    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    Artifact artifact = artifacts.get(position);
    View gridView;
    gridView = new View(context);
    if (convertView == null) {

        ;
        switch (artifact.getType()) {
            case 1:

                gridView = inflater.inflate(R.layout.artifact_article, null);
                mTitle = (TextView) gridView.findViewById(R.id.titre);
                mPseudo = (TextView) gridView.findViewById(R.id.pseudo);
                mMessage = (TextView) gridView.findViewById(R.id.message_input);
                mTitle.setText(artifact.getTitle());
                mPseudo.setText(artifact.getPseudo());
                mMessage.setText(artifact.getMessage());


            case 2:
                gridView = inflater.inflate(R.layout.artifact_image, null);
                mPseudo = (TextView) gridView.findViewById(R.id.pseudo);
                mImage = (ImageView) gridView.findViewById(R.id.imageReceived);
                mPseudo.setText(artifact.getPseudo());
                mImage.setImageBitmap(BitmapFactory.decodeFile(artifact.getImagePath()));


        }
    }
    else {

            gridView = (View) convertView;
        }
    return gridView;
    }


}

这个活动

    GridView listArtifactView;
    List<Artifact> listArtifact = new ArrayList<>();
    ArtifactAdapter artifactAdapter = new ArtifactAdapter(this,listArtifact );
Artifact artefact = new Artifact(getPseudo());
                    artefact.setTitle(titre.getText().toString());
                    artefact.setMessage(message.getText().toString());
                    artefact.setType(1);

 listArtifactView = (GridView) findViewById(R.id.listArtifactView);

        listArtifactView.setAdapter(artifactAdapter);

                listArtifact.add(artefact);

1 个答案:

答案 0 :(得分:0)

我不知道你想在这里实现什么。但是将你的getView更改为这样的东西。

 LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    Artifact artifact = artifacts.get(position);
    if (convertView == null) {

        switch (artifact.getType()) {
            case 1:

                convertView = inflater.inflate(R.layout.artifact_article, null);
                mTitle = (TextView) convertView .findViewById(R.id.titre);
                mPseudo = (TextView) convertView .findViewById(R.id.pseudo);
                mMessage = (TextView) convertView .findViewById(R.id.message_input);
                mTitle.setText(artifact.getTitle());
                mPseudo.setText(artifact.getPseudo());
                mMessage.setText(artifact.getMessage());


            case 2:
               convertView  = inflater.inflate(R.layout.artifact_image, null);
                mPseudo = (TextView) convertView .findViewById(R.id.pseudo);
                mImage = (ImageView) convertView .findViewById(R.id.imageReceived);
                mPseudo.setText(artifact.getPseudo());
                mImage.setImageBitmap(BitmapFactory.decodeFile(artifact.getImagePath()));


        }
    }

    return convertView 

看看它是否有帮助。